You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit '0676de935b1e81bc5b5698fef3e7d48ff2ea77ff'
* commit '0676de935b1e81bc5b5698fef3e7d48ff2ea77ff': arm: Implement a NEON version of 422 h264_h_loop_filter_chroma Merged-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		| @@ -33,6 +33,8 @@ void ff_h264_v_loop_filter_chroma_neon(uint8_t *pix, ptrdiff_t stride, int alpha | |||||||
|                                        int beta, int8_t *tc0); |                                        int beta, int8_t *tc0); | ||||||
| void ff_h264_h_loop_filter_chroma_neon(uint8_t *pix, ptrdiff_t stride, int alpha, | void ff_h264_h_loop_filter_chroma_neon(uint8_t *pix, ptrdiff_t stride, int alpha, | ||||||
|                                        int beta, int8_t *tc0); |                                        int beta, int8_t *tc0); | ||||||
|  | void ff_h264_h_loop_filter_chroma422_neon(uint8_t *pix, ptrdiff_t stride, int alpha, | ||||||
|  |                                           int beta, int8_t *tc0); | ||||||
|  |  | ||||||
| void ff_weight_h264_pixels_16_neon(uint8_t *dst, int stride, int height, | void ff_weight_h264_pixels_16_neon(uint8_t *dst, int stride, int height, | ||||||
|                                    int log2_den, int weight, int offset); |                                    int log2_den, int weight, int offset); | ||||||
| @@ -77,9 +79,11 @@ static av_cold void h264dsp_init_neon(H264DSPContext *c, const int bit_depth, | |||||||
|         c->h264_v_loop_filter_luma   = ff_h264_v_loop_filter_luma_neon; |         c->h264_v_loop_filter_luma   = ff_h264_v_loop_filter_luma_neon; | ||||||
|         c->h264_h_loop_filter_luma   = ff_h264_h_loop_filter_luma_neon; |         c->h264_h_loop_filter_luma   = ff_h264_h_loop_filter_luma_neon; | ||||||
|         c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon; |         c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon; | ||||||
|         if(chroma_format_idc == 1){ |  | ||||||
|         c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon; |         if (chroma_format_idc <= 1) | ||||||
|         } |             c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon; | ||||||
|  |         else | ||||||
|  |             c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon; | ||||||
|  |  | ||||||
|         c->weight_h264_pixels_tab[0] = ff_weight_h264_pixels_16_neon; |         c->weight_h264_pixels_tab[0] = ff_weight_h264_pixels_16_neon; | ||||||
|         c->weight_h264_pixels_tab[1] = ff_weight_h264_pixels_8_neon; |         c->weight_h264_pixels_tab[1] = ff_weight_h264_pixels_8_neon; | ||||||
|   | |||||||
| @@ -237,6 +237,7 @@ function ff_h264_h_loop_filter_chroma_neon, export=1 | |||||||
|         h264_loop_filter_start |         h264_loop_filter_start | ||||||
|  |  | ||||||
|         sub             r0,  r0,  #2 |         sub             r0,  r0,  #2 | ||||||
|  | h_loop_filter_chroma420: | ||||||
|         vld1.32         {d18[0]}, [r0], r1 |         vld1.32         {d18[0]}, [r0], r1 | ||||||
|         vld1.32         {d16[0]}, [r0], r1 |         vld1.32         {d16[0]}, [r0], r1 | ||||||
|         vld1.32         {d0[0]},  [r0], r1 |         vld1.32         {d0[0]},  [r0], r1 | ||||||
| @@ -271,6 +272,24 @@ function ff_h264_h_loop_filter_chroma_neon, export=1 | |||||||
|         bx              lr |         bx              lr | ||||||
| endfunc | endfunc | ||||||
|  |  | ||||||
|  | function ff_h264_h_loop_filter_chroma422_neon, export=1 | ||||||
|  |         h264_loop_filter_start | ||||||
|  |         push            {r4, lr} | ||||||
|  |         add             r4,  r0,  r1 | ||||||
|  |         add             r1,  r1,  r1 | ||||||
|  |         sub             r0,  r0,  #2 | ||||||
|  |  | ||||||
|  |         bl              h_loop_filter_chroma420 | ||||||
|  |  | ||||||
|  |         ldr             r12, [sp, #8] | ||||||
|  |         ldr             r12, [r12] | ||||||
|  |         vmov.32         d24[0], r12 | ||||||
|  |         sub             r0,  r4,  #2 | ||||||
|  |  | ||||||
|  |         bl              h_loop_filter_chroma420 | ||||||
|  |         pop             {r4, pc} | ||||||
|  | endfunc | ||||||
|  |  | ||||||
| @ Biweighted prediction | @ Biweighted prediction | ||||||
|  |  | ||||||
| .macro  biweight_16     macs, macd | .macro  biweight_16     macs, macd | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user