aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2025-02-24 12:51:16 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2025-02-27 15:30:12 +0100
commitf1a4787f76cc48a890023088434bcd42b13cc5d6 (patch)
tree8fbf7af1315a8c2f1cf00aabb43cb0a552aa9172
parent802e4f4a53b11eeb0b28d7e74ab8d655ca894a17 (diff)
downloadffmpeg-f1a4787f76cc48a890023088434bcd42b13cc5d6.tar.gz
avcodec/proresdsp: Make put_pixels truely ptrdiff_t compatible
It currently uses an intermediate int which wouldn't work if linesize exceeded the range of int and inhibits compiler optimizations. Also switch to pointer arithmetic and use smaller scope. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavcodec/proresdsp.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/libavcodec/proresdsp.c b/libavcodec/proresdsp.c
index d20b9d938a..20de1cab4f 100644
--- a/libavcodec/proresdsp.c
+++ b/libavcodec/proresdsp.c
@@ -40,16 +40,14 @@
*/
static inline void put_pixel(uint16_t *dst, ptrdiff_t linesize, const int16_t *in, int bits_per_raw_sample) {
- int x, y, src_offset, dst_offset;
-
- for (y = 0, dst_offset = 0; y < 8; y++, dst_offset += linesize) {
- for (x = 0; x < 8; x++) {
- src_offset = (y << 3) + x;
+ for (int y = 0; y < 8; y++, dst += linesize) {
+ for (int x = 0; x < 8; x++) {
+ int src_offset = (y << 3) + x;
if (bits_per_raw_sample == 10) {
- dst[dst_offset + x] = CLIP_10(in[src_offset]);
+ dst[x] = CLIP_10(in[src_offset]);
} else {//12b
- dst[dst_offset + x] = CLIP_12(in[src_offset]);
+ dst[x] = CLIP_12(in[src_offset]);
}
}
}