Changed indexing in libopenjpeg to shorten lines
authorMichael Bradshaw <mbradshaw@sorensonmedia.com>
Thu, 19 Jan 2012 22:15:56 +0000 (23:15 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Thu, 19 Jan 2012 22:31:22 +0000 (23:31 +0100)
libavcodec/libopenjpegenc.c

index ad47611..30cc022 100644 (file)
@@ -206,6 +206,8 @@ static int libopenjpeg_copy_packed8(AVCodecContext *avctx, AVFrame *frame, opj_i
     int compno;
     int x;
     int y;
+    int image_index;
+    int frame_index;
     const int numcomps = image->numcomps;
 
     for (compno = 0; compno < numcomps; ++compno) {
@@ -217,8 +219,11 @@ static int libopenjpeg_copy_packed8(AVCodecContext *avctx, AVFrame *frame, opj_i
 
     for (compno = 0; compno < numcomps; ++compno) {
         for (y = 0; y < avctx->height; ++y) {
+            image_index = y * avctx->width;
+            frame_index = y * frame->linesize[0] + compno;
             for (x = 0; x < avctx->width; ++x) {
-                image->comps[compno].data[y * avctx->width + x] = frame->data[0][y * frame->linesize[0] + x * numcomps + compno];
+                image->comps[compno].data[image_index++] = frame->data[0][frame_index];
+                frame_index += numcomps;
             }
         }
     }
@@ -231,6 +236,8 @@ static int libopenjpeg_copy_packed16(AVCodecContext *avctx, AVFrame *frame, opj_
     int compno;
     int x;
     int y;
+    int image_index;
+    int frame_index;
     const int numcomps = image->numcomps;
     uint16_t *frame_ptr = (uint16_t*)frame->data[0];
 
@@ -243,8 +250,11 @@ static int libopenjpeg_copy_packed16(AVCodecContext *avctx, AVFrame *frame, opj_
 
     for (compno = 0; compno < numcomps; ++compno) {
         for (y = 0; y < avctx->height; ++y) {
+            image_index = y * avctx->width;
+            frame_index = y * (frame->linesize[0] / 2) + compno;
             for (x = 0; x < avctx->width; ++x) {
-                image->comps[compno].data[y * avctx->width + x] = frame_ptr[y * frame->linesize[0] / 2 + x * numcomps + compno];
+                image->comps[compno].data[image_index++] = frame_ptr[frame_index];
+                frame_index += numcomps;
             }
         }
     }
@@ -259,6 +269,8 @@ static int libopenjpeg_copy_unpacked8(AVCodecContext *avctx, AVFrame *frame, opj
     int y;
     int width;
     int height;
+    int image_index;
+    int frame_index;
     const int numcomps = image->numcomps;
 
     for (compno = 0; compno < numcomps; ++compno) {
@@ -272,8 +284,10 @@ static int libopenjpeg_copy_unpacked8(AVCodecContext *avctx, AVFrame *frame, opj
         width = avctx->width / image->comps[compno].dx;
         height = avctx->height / image->comps[compno].dy;
         for (y = 0; y < height; ++y) {
+            image_index = y * width;
+            frame_index = y * frame->linesize[compno];
             for (x = 0; x < width; ++x) {
-                image->comps[compno].data[y * width + x] = frame->data[compno][y * frame->linesize[compno] + x];
+                image->comps[compno].data[image_index++] = frame->data[compno][frame_index++];
             }
         }
     }
@@ -288,6 +302,8 @@ static int libopenjpeg_copy_unpacked16(AVCodecContext *avctx, AVFrame *frame, op
     int y;
     int width;
     int height;
+    int image_index;
+    int frame_index;
     const int numcomps = image->numcomps;
     uint16_t *frame_ptr;
 
@@ -303,8 +319,10 @@ static int libopenjpeg_copy_unpacked16(AVCodecContext *avctx, AVFrame *frame, op
         height = avctx->height / image->comps[compno].dy;
         frame_ptr = (uint16_t*)frame->data[compno];
         for (y = 0; y < height; ++y) {
+            image_index = y * width;
+            frame_index = y * (frame->linesize[compno] / 2);
             for (x = 0; x < width; ++x) {
-                image->comps[compno].data[y * width + x] = frame_ptr[y * (frame->linesize[compno] / 2) + x];
+                image->comps[compno].data[image_index++] = frame_ptr[frame_index++];
             }
         }
     }