changeset 114:3a17db1515e4 libavformat

use correct YUV format for JPEG
author bellard
date Mon, 21 Apr 2003 14:39:52 +0000
parents ff802c67fda9
children af07cbf4f24a
files jpeg.c
diffstat 1 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/jpeg.c	Sun Apr 20 14:20:32 2003 +0000
+++ b/jpeg.c	Mon Apr 21 14:39:52 2003 +0000
@@ -42,7 +42,19 @@
 
     info->width = c->width;
     info->height = c->height;
-    info->pix_fmt = c->pix_fmt;
+    switch(c->pix_fmt) {
+    case PIX_FMT_YUV420P:
+        info->pix_fmt = PIX_FMT_YUVJ420P;
+        break;
+    case PIX_FMT_YUV422P:
+        info->pix_fmt = PIX_FMT_YUVJ422P;
+        break;
+    case PIX_FMT_YUV444P:
+        info->pix_fmt = PIX_FMT_YUVJ444P;
+        break;
+    default:
+        return -1;
+    }
     ret = jctx->alloc_cb(jctx->opaque, info);
     if (ret) {
         jctx->ret_code = ret;
@@ -164,7 +176,20 @@
         goto fail2;
     c->width = info->width;
     c->height = info->height;
-    c->pix_fmt = info->pix_fmt;
+    /* XXX: currently move that to the codec ? */
+    switch(info->pix_fmt) {
+    case PIX_FMT_YUVJ420P:
+        c->pix_fmt = PIX_FMT_YUV420P;
+        break;
+    case PIX_FMT_YUVJ422P:
+        c->pix_fmt = PIX_FMT_YUV422P;
+        break;
+    case PIX_FMT_YUVJ444P:
+        c->pix_fmt = PIX_FMT_YUV444P;
+        break;
+    default:
+        goto fail1;
+    }
     for(i=0;i<3;i++) {
         picture->data[i] = info->pict.data[i];
         picture->linesize[i] = info->pict.linesize[i];
@@ -202,6 +227,6 @@
     "jpg,jpeg",
     jpeg_probe,
     jpeg_read,
-    (1 << PIX_FMT_YUV420P) | (1 << PIX_FMT_YUV422P) | (1 << PIX_FMT_YUV444P),
+    (1 << PIX_FMT_YUVJ420P) | (1 << PIX_FMT_YUVJ422P) | (1 << PIX_FMT_YUVJ444P),
     jpeg_write,
 };