[FFmpeg-cvslog] avcdoec/huffyuvenc: optimize sub_left_prediction()
Michael Niedermayer
git at videolan.org
Mon Jan 20 23:03:40 CET 2014
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Jan 20 22:12:56 2014 +0100| [f9c7b14c040fe1c5f9253d7abd474f8b2282903c] | committer: Michael Niedermayer
avcdoec/huffyuvenc: optimize sub_left_prediction()
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f9c7b14c040fe1c5f9253d7abd474f8b2282903c
---
libavcodec/huffyuvenc.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/libavcodec/huffyuvenc.c b/libavcodec/huffyuvenc.c
index 206f182..aba8f9c 100644
--- a/libavcodec/huffyuvenc.c
+++ b/libavcodec/huffyuvenc.c
@@ -69,15 +69,22 @@ static inline int sub_left_prediction(HYuvContext *s, uint8_t *dst,
} else {
const uint16_t *src16 = (const uint16_t *)src;
uint16_t *dst16 = ( uint16_t *)dst;
-
- for (i = 0; i < w; i++) {
- const int temp = src16[i];
- dst16[i] = temp - left;
- left = temp;
+ if (w < 32) {
+ for (i = 0; i < w; i++) {
+ const int temp = src16[i];
+ dst16[i] = temp - left;
+ left = temp;
+ }
+ return left;
+ } else {
+ for (i = 0; i < 16; i++) {
+ const int temp = src16[i];
+ dst16[i] = temp - left;
+ left = temp;
+ }
+ s->llviddsp.diff_int16(dst16 + 16, src16 + 16, src16 + 15, s->n - 1, w - 16);
+ return src16[w-1];
}
- return left;
-
- //FIXME optimize
}
}
More information about the ffmpeg-cvslog
mailing list