History

add new c and assembly functions to optimize downsampler when downscale equal 1:3/1:4

Guangwei Wang committed 11 years ago

Commit 64657d31 parent 69a62ea9 files · +1125 −8Browse files

Showing the changes to codec/processing/src/downsample/downsample.h (1 of 9 files). Show all

Unified · Split

codec/processing/src/downsample/downsample.h+32−5
@@ -54,20 +54,29 @@ typedef void (HalveDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride, · 53 unmodified lines
5454 uint8_t* pSrc, const int32_t kiSrcStride,
5555 const int32_t kiSrcWidth, const int32_t kiSrcHeight);
5656
57+typedef void (SpecificDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride,
58+ uint8_t* pSrc, const int32_t kiSrcStride,
59+ const int32_t kiSrcWidth, const int32_t kiHeight);
60+
5761 typedef void (GeneralDownsampleFunc) (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
5862 const int32_t kiDstHeight,
5963 uint8_t* pSrc, const int32_t kiSrcStride, const int32_t kiSrcWidth, const int32_t kiSrcHeight);
6064
6165 typedef HalveDownsampleFunc* PHalveDownsampleFunc;
66+typedef SpecificDownsampleFunc* PSpecificDownsampleFunc;
6267 typedef GeneralDownsampleFunc* PGeneralDownsampleFunc;
6368
64−HalveDownsampleFunc DyadicBilinearDownsampler_c;
69+HalveDownsampleFunc DyadicBilinearDownsampler_c;
6570 GeneralDownsampleFunc GeneralBilinearFastDownsampler_c;
6671 GeneralDownsampleFunc GeneralBilinearAccurateDownsampler_c;
72+SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_c;
73+SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_c;
6774
6875 typedef struct {
6976 // align_index: 0 = x32; 1 = x16; 2 = x8; 3 = common case left;
7077 PHalveDownsampleFunc pfHalfAverage[4];
78+ PSpecificDownsampleFunc pfOneThirdDownsampler;
79+ PSpecificDownsampleFunc pfQuarterDownsampler;
7180 PGeneralDownsampleFunc pfGeneralRatioLuma;
7281 PGeneralDownsampleFunc pfGeneralRatioChroma;
7382 } SDownsampleFuncs;
@@ -93,10 +102,19 @@ HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_sse4; · 19 unmodified lines
93102 GeneralDownsampleFunc GeneralBilinearFastDownsamplerWrap_sse2;
94103 GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_sse2;
95104
105+SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_ssse3;
106+SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_sse4;
107+SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_sse;
108+SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_ssse3;
109+SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_sse4;
110+
96111 void GeneralBilinearFastDownsampler_sse2 (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
97− const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
112+ const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX,
113+ const uint32_t kuiScaleY);
98114 void GeneralBilinearAccurateDownsampler_sse2 (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
99− const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
115+ const int32_t kiDstHeight, uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX,
116+ const uint32_t kuiScaleY);
117+
100118 WELSVP_EXTERN_C_END
101119 #endif
102120
@@ -109,6 +127,10 @@ HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_neon; · 6 unmodified lines
109127
110128 GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_neon;
111129
130+SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_neon;
131+
132+SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_neon;
133+
112134 void GeneralBilinearAccurateDownsampler_neon (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth,
113135 const int32_t kiDstHeight,
114136 uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
@@ -125,8 +147,13 @@ HalveDownsampleFunc DyadicBilinearDownsamplerWidthx32_AArch64_neon; · 10 unmodified lines
125147
126148 GeneralDownsampleFunc GeneralBilinearAccurateDownsamplerWrap_AArch64_neon;
127149
128−void GeneralBilinearAccurateDownsampler_AArch64_neon (uint8_t* pDst, const int32_t kiDstStride, const int32_t kiDstWidth, const int32_t kiDstHeight,
129− uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
150+SpecificDownsampleFunc DyadicBilinearOneThirdDownsampler_AArch64_neon;
151+
152+SpecificDownsampleFunc DyadicBilinearQuarterDownsampler_AArch64_neon;
153+
154+void GeneralBilinearAccurateDownsampler_AArch64_neon (uint8_t* pDst, const int32_t kiDstStride,
155+ const int32_t kiDstWidth, const int32_t kiDstHeight,
156+ uint8_t* pSrc, const int32_t kiSrcStride, const uint32_t kuiScaleX, const uint32_t kuiScaleY);
130157
131158 WELSVP_EXTERN_C_END
132159 #endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t