Mercurial > libavformat.hg
changeset 1137:246df8e6aab7 libavformat
Properly set the image depth
author | lucabe |
---|---|
date | Wed, 28 Jun 2006 12:18:22 +0000 |
parents | d65cd7c3573e |
children | 36ce24677f96 |
files | grab.c |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/grab.c Wed Jun 28 10:51:56 2006 +0000 +++ b/grab.c Wed Jun 28 12:18:22 2006 +0000 @@ -62,7 +62,7 @@ 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 @@ } 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 @@ #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;