Mercurial > mplayer.hg
annotate libswscale/yuv2rgb_mlib.c @ 21404:896a8210ed9f
Make sure we do not hang if no streams are available
author | reimar |
---|---|
date | Fri, 01 Dec 2006 18:51:44 +0000 |
parents | 8e50cba9fe03 |
children | 8aac0a59f9c7 |
rev | line source |
---|---|
18861 | 1 /* |
2 * yuv2rgb_mlib.c, Software YUV to RGB coverter using mediaLib | |
3 * | |
4 * Copyright (C) 2000, Håkan Hjort <d95hjort@dtek.chalmers.se> | |
5 * All Rights Reserved. | |
6 * | |
7 * This file is part of mpeg2dec, a free MPEG-2 video decoder | |
8 * | |
9 * mpeg2dec is free software; you can redistribute it and/or modify | |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2, or (at your option) | |
12 * any later version. | |
13 * | |
14 * mpeg2dec is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with GNU Make; see the file COPYING. If not, write to | |
21 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
22 * | |
23 */ | |
24 | |
25 #include <mlib_types.h> | |
26 #include <mlib_status.h> | |
27 #include <mlib_sys.h> | |
28 #include <mlib_video.h> | |
29 #include <inttypes.h> | |
30 #include <stdlib.h> | |
31 #include <assert.h> | |
32 | |
33 #include "swscale.h" | |
34 | |
35 static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | |
36 int srcSliceH, uint8_t* dst[], int dstStride[]){ | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
37 if(c->srcFormat == PIX_FMT_YUV422P){ |
18861 | 38 srcStride[1] *= 2; |
39 srcStride[2] *= 2; | |
40 } | |
41 | |
42 assert(srcStride[1] == srcStride[2]); | |
43 | |
44 mlib_VideoColorYUV2ARGB420(dst[0]+srcSliceY*dstStride[0], src[0], src[1], src[2], c->dstW, | |
45 srcSliceH, dstStride[0], srcStride[0], srcStride[1]); | |
46 return srcSliceH; | |
47 } | |
48 | |
49 static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | |
50 int srcSliceH, uint8_t* dst[], int dstStride[]){ | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
51 if(c->srcFormat == PIX_FMT_YUV422P){ |
18861 | 52 srcStride[1] *= 2; |
53 srcStride[2] *= 2; | |
54 } | |
55 | |
56 assert(srcStride[1] == srcStride[2]); | |
57 | |
58 mlib_VideoColorYUV2ABGR420(dst[0]+srcSliceY*dstStride[0], src[0], src[1], src[2], c->dstW, | |
59 srcSliceH, dstStride[0], srcStride[0], srcStride[1]); | |
60 return srcSliceH; | |
61 } | |
62 | |
63 static int mlib_YUV2RGB420_24(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | |
64 int srcSliceH, uint8_t* dst[], int dstStride[]){ | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
65 if(c->srcFormat == PIX_FMT_YUV422P){ |
18861 | 66 srcStride[1] *= 2; |
67 srcStride[2] *= 2; | |
68 } | |
69 | |
70 assert(srcStride[1] == srcStride[2]); | |
71 | |
72 mlib_VideoColorYUV2RGB420(dst[0]+srcSliceY*dstStride[0], src[0], src[1], src[2], c->dstW, | |
73 srcSliceH, dstStride[0], srcStride[0], srcStride[1]); | |
74 return srcSliceH; | |
75 } | |
76 | |
77 | |
78 SwsFunc yuv2rgb_init_mlib(SwsContext *c) | |
79 { | |
80 switch(c->dstFormat){ | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
81 case PIX_FMT_RGB24: return mlib_YUV2RGB420_24; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
82 case PIX_FMT_BGR32: return mlib_YUV2ARGB420_32; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
83 case PIX_FMT_RGB32: return mlib_YUV2ABGR420_32; |
18861 | 84 default: return NULL; |
85 } | |
86 } | |
87 |