[FFmpeg-cvslog] cinepak: simplify

Michael Niedermayer git at videolan.org
Wed Feb 20 04:15:17 CET 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Feb 20 02:40:50 2013 +0100| [a3adbedf9b631554a5d0332805ea81313e5bc76f] | committer: Michael Niedermayer

cinepak: simplify

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a3adbedf9b631554a5d0332805ea81313e5bc76f
---

 libavcodec/cinepak.c |   20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/libavcodec/cinepak.c b/libavcodec/cinepak.c
index a78e1f1..a88469a 100644
--- a/libavcodec/cinepak.c
+++ b/libavcodec/cinepak.c
@@ -121,11 +121,6 @@ static void cinepak_decode_codebook (cvid_codebook *codebook,
                     *p++ = av_clip_uint8(g);
                     *p++ = av_clip_uint8(b);
                 }
-            } else {
-                /* this codebook type indicates either greyscale or
-                 * palettized video, it is already stored as grey rgb24
-                 * which makes it robust even when the frame is considered
-                 * to be rgb24 */
             }
         } else {
             p += 12;
@@ -189,16 +184,14 @@ static int cinepak_decode_vectors (CinepakContext *s, cvid_strip *strip,
                     if (data >= eod)
                         return AVERROR_INVALIDDATA;
 
-                    p = strip->v1_codebook[*data++] + 6;
+                    p = strip->v1_codebook[*data++];
                     if (s->palette_video) {
-                        *(ip3+0) = *(ip3+1) = *(ip2+0) = *(ip2+1) = *p;
-                        p += 3; /* ... + 9 */
-                        *(ip3+2) = *(ip3+3) = *(ip2+2) = *(ip2+3) = *p;
-                        p -= 9; /* ... + 0 */
-                        *(ip1+0) = *(ip1+1) = *(ip0+0) = *(ip0+1) = *p;
-                        p += 3; /* ... + 3 */
-                        *(ip1+2) = *(ip1+3) = *(ip0+2) = *(ip0+3) = *p;
+                        ip3[0] = ip3[1] = ip2[0] = ip2[1] = p[6];
+                        ip3[2] = ip3[3] = ip2[2] = ip2[3] = p[9];
+                        ip1[0] = ip1[1] = ip0[0] = ip0[1] = p[0];
+                        ip1[2] = ip1[3] = ip0[2] = ip0[3] = p[3];
                     } else {
+                        p += 6;
                         memcpy(ip3 + 0, p, 3); memcpy(ip3 + 3, p, 3);
                         memcpy(ip2 + 0, p, 3); memcpy(ip2 + 3, p, 3);
                         p += 3; /* ... + 9 */
@@ -412,6 +405,7 @@ static av_cold int cinepak_decode_init(AVCodecContext *avctx)
     s->avctx = avctx;
     s->width = (avctx->width + 3) & ~3;
     s->height = (avctx->height + 3) & ~3;
+
     s->sega_film_skip_bytes = -1;  /* uninitialized state */
 
     // check for paletted data



More information about the ffmpeg-cvslog mailing list