[SCM] libav/experimental: Properly set the image depth

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:48:22 UTC 2013


The following commit has been merged in the experimental branch:
commit 76a77ff291aac29f4c6df86dfd7db60e1097fee6
Author: Luca Abeni <lucabe72 at email.it>
Date:   Wed Jun 28 12:18:22 2006 +0000

    Properly set the image depth
    
    Originally committed as revision 5538 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/grab.c b/libavformat/grab.c
index 79bdf9d..f40571c 100644
--- a/libavformat/grab.c
+++ b/libavformat/grab.c
@@ -62,7 +62,7 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     int width, height;
     int video_fd, frame_size;
     int ret, frame_rate, frame_rate_base;
-    int desired_palette;
+    int desired_palette, desired_depth;
     struct video_tuner tuner;
     struct video_audio audio;
     struct video_picture pict;
@@ -118,12 +118,16 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     }
 
     desired_palette = -1;
-    if (st->codec->pix_fmt == PIX_FMT_YUV420P) {
+    desired_depth = -1;
+    if (ap->pix_fmt == PIX_FMT_YUV420P) {
         desired_palette = VIDEO_PALETTE_YUV420P;
-    } else if (st->codec->pix_fmt == PIX_FMT_YUV422) {
+        desired_depth = 12;
+    } else if (ap->pix_fmt == PIX_FMT_YUV422) {
         desired_palette = VIDEO_PALETTE_YUV422;
-    } else if (st->codec->pix_fmt == PIX_FMT_BGR24) {
+        desired_depth = 16;
+    } else if (ap->pix_fmt == PIX_FMT_BGR24) {
         desired_palette = VIDEO_PALETTE_RGB24;
+        desired_depth = 24;
     }
 
     /* set tv standard */
@@ -155,14 +159,18 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
 #endif
     /* try to choose a suitable video format */
     pict.palette = desired_palette;
+    pict.depth= desired_depth;
     if (desired_palette == -1 || (ret = ioctl(video_fd, VIDIOCSPICT, &pict)) < 0) {
         pict.palette=VIDEO_PALETTE_YUV420P;
+        pict.depth=12;
         ret = ioctl(video_fd, VIDIOCSPICT, &pict);
         if (ret < 0) {
             pict.palette=VIDEO_PALETTE_YUV422;
+            pict.depth=16;
             ret = ioctl(video_fd, VIDIOCSPICT, &pict);
             if (ret < 0) {
                 pict.palette=VIDEO_PALETTE_RGB24;
+                pict.depth=24;
                 ret = ioctl(video_fd, VIDIOCSPICT, &pict);
                 if (ret < 0)
                     goto fail1;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list