| 
																	
																	
																		
																	
																	
																 | 
																@@ -25,6 +25,7 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																 */ | 
																 | 
																 | 
																 */ | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																#include "libavutil/common.h" | 
																 | 
																 | 
																#include "libavutil/common.h" | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#include "libavutil/avassert.h" | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																#include "transform.h" | 
																 | 
																 | 
																#include "transform.h" | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -135,6 +136,16 @@ void avfilter_mul_matrix(const float *m1, float scalar, float *result) | 
															
														
														
													
														
															
																 | 
																 | 
																        result[i] = m1[i] * scalar; | 
																 | 
																 | 
																        result[i] = m1[i] * scalar; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static inline int mirror(int v, int m) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    while ((unsigned)v > (unsigned)m) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        v = -v; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (v < 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            v += 2 * m; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    return v; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																void avfilter_transform(const uint8_t *src, uint8_t *dst, | 
																 | 
																 | 
																void avfilter_transform(const uint8_t *src, uint8_t *dst, | 
															
														
														
													
														
															
																 | 
																 | 
																                        int src_stride, int dst_stride, | 
																 | 
																 | 
																                        int src_stride, int dst_stride, | 
															
														
														
													
														
															
																 | 
																 | 
																                        int width, int height, const float *matrix, | 
																 | 
																 | 
																                        int width, int height, const float *matrix, | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -173,8 +184,11 @@ void avfilter_transform(const uint8_t *src, uint8_t *dst, | 
															
														
														
													
														
															
																 | 
																 | 
																                    def = src[(int)y_s * src_stride + (int)x_s]; | 
																 | 
																 | 
																                    def = src[(int)y_s * src_stride + (int)x_s]; | 
															
														
														
													
														
															
																 | 
																 | 
																                    break; | 
																 | 
																 | 
																                    break; | 
															
														
														
													
														
															
																 | 
																 | 
																                case FILL_MIRROR: | 
																 | 
																 | 
																                case FILL_MIRROR: | 
															
														
														
													
														
															
																 | 
																 | 
																                    y_s = (y_s < 0) ? -y_s : (y_s >= height) ? (height + height - y_s) : y_s; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                    x_s = (x_s < 0) ? -x_s : (x_s >= width) ? (width + width - x_s) : x_s; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    x_s = mirror(x_s,  width-1); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    y_s = mirror(y_s, height-1); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    av_assert2(x_s >= 0 && y_s >= 0); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    av_assert2(x_s < width && y_s < height); | 
															
														
														
													
														
															
																 | 
																 | 
																                    def = src[(int)y_s * src_stride + (int)x_s]; | 
																 | 
																 | 
																                    def = src[(int)y_s * src_stride + (int)x_s]; | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |