Mercurial > mplayer.hg
annotate libmpcodecs/mp_image.c @ 34757:da38eb1e2069
subassconvert: handle "\r\n" line ends
Previously the code converting text subtitles to ASS format converted newline
characters, and only those, to ASS "new line" markup. If the subtitles
contained "\r\n", the "\r" was thus left in the text. In previous libass
versions the "\r" was not visible, but in the current one it produces an empty
box. Improve the conversion to remove the "\r" in that case. Also treat a lone
"\r" as a newline.
Picked from mplayer2/3e0a2705
author | cboesch |
---|---|
date | Sat, 07 Apr 2012 11:17:09 +0000 |
parents | 25acb5f98cb4 |
children | 0eba64545a27 |
rev | line source |
---|---|
30421
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
1 /* |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
2 * This file is part of MPlayer. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
3 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
7 * (at your option) any later version. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
8 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
12 * GNU General Public License for more details. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
13 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30115
diff
changeset
|
17 */ |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
18 |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
19 #include "config.h" |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
20 |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
21 #include <stdio.h> |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
22 #include <stdlib.h> |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
23 #include <string.h> |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
24 |
28594
df67d03dde3b
Convert HAVE_MALLOC_H into a 0/1 definition, fixes the warning:
diego
parents:
23994
diff
changeset
|
25 #if HAVE_MALLOC_H |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
26 #include <malloc.h> |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
27 #endif |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
28 |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
29 #include "libmpcodecs/img_format.h" |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
30 #include "libmpcodecs/mp_image.h" |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
31 #include "libvo/fastmemcpy.h" |
31003
00825525514e
Replace memalign(x) (x > 8) by av_malloc() to prevent crashes on systems
zuxy
parents:
30996
diff
changeset
|
32 #include "libavutil/mem.h" |
34174
a93891202051
Add missing mp_msg.h #includes, remove some unnecessary ones.
diego
parents:
34157
diff
changeset
|
33 #include "mp_msg.h" |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
34 |
30112 | 35 void mp_image_alloc_planes(mp_image_t *mpi) { |
36 // IF09 - allocate space for 4. plane delta info - unused | |
37 if (mpi->imgfmt == IMGFMT_IF09) { | |
31003
00825525514e
Replace memalign(x) (x > 8) by av_malloc() to prevent crashes on systems
zuxy
parents:
30996
diff
changeset
|
38 mpi->planes[0]=av_malloc(mpi->bpp*mpi->width*(mpi->height+2)/8+ |
30112 | 39 mpi->chroma_width*mpi->chroma_height); |
40 } else | |
31003
00825525514e
Replace memalign(x) (x > 8) by av_malloc() to prevent crashes on systems
zuxy
parents:
30996
diff
changeset
|
41 mpi->planes[0]=av_malloc(mpi->bpp*mpi->width*(mpi->height+2)/8); |
30112 | 42 if (mpi->flags&MP_IMGFLAG_PLANAR) { |
43 int bpp = IMGFMT_IS_YUVP16(mpi->imgfmt)? 2 : 1; | |
44 // YV12/I420/YVU9/IF09. feel free to add other planar formats here... | |
30115
ad61464d02a7
Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents:
30112
diff
changeset
|
45 mpi->stride[0]=mpi->stride[3]=bpp*mpi->width; |
30112 | 46 if(mpi->num_planes > 2){ |
47 mpi->stride[1]=mpi->stride[2]=bpp*mpi->chroma_width; | |
48 if(mpi->flags&MP_IMGFLAG_SWAPPED){ | |
49 // I420/IYUV (Y,U,V) | |
50 mpi->planes[1]=mpi->planes[0]+mpi->stride[0]*mpi->height; | |
51 mpi->planes[2]=mpi->planes[1]+mpi->stride[1]*mpi->chroma_height; | |
30115
ad61464d02a7
Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents:
30112
diff
changeset
|
52 if (mpi->num_planes > 3) |
ad61464d02a7
Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents:
30112
diff
changeset
|
53 mpi->planes[3]=mpi->planes[2]+mpi->stride[2]*mpi->chroma_height; |
30112 | 54 } else { |
55 // YV12,YVU9,IF09 (Y,V,U) | |
56 mpi->planes[2]=mpi->planes[0]+mpi->stride[0]*mpi->height; | |
57 mpi->planes[1]=mpi->planes[2]+mpi->stride[1]*mpi->chroma_height; | |
30115
ad61464d02a7
Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents:
30112
diff
changeset
|
58 if (mpi->num_planes > 3) |
ad61464d02a7
Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents:
30112
diff
changeset
|
59 mpi->planes[3]=mpi->planes[1]+mpi->stride[1]*mpi->chroma_height; |
30112 | 60 } |
61 } else { | |
62 // NV12/NV21 | |
63 mpi->stride[1]=mpi->chroma_width; | |
64 mpi->planes[1]=mpi->planes[0]+mpi->stride[0]*mpi->height; | |
65 } | |
66 } else { | |
67 mpi->stride[0]=mpi->width*mpi->bpp/8; | |
68 if (mpi->flags & MP_IMGFLAG_RGB_PALETTE) | |
31003
00825525514e
Replace memalign(x) (x > 8) by av_malloc() to prevent crashes on systems
zuxy
parents:
30996
diff
changeset
|
69 mpi->planes[1] = av_malloc(1024); |
30112 | 70 } |
71 mpi->flags|=MP_IMGFLAG_ALLOCATED; | |
72 } | |
73 | |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
74 mp_image_t* alloc_mpi(int w, int h, unsigned long int fmt) { |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
75 mp_image_t* mpi = new_mp_image(w,h); |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
76 |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
77 mp_image_setfmt(mpi,fmt); |
30112 | 78 mp_image_alloc_planes(mpi); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28594
diff
changeset
|
79 |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
80 return mpi; |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
81 } |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
82 |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
83 void copy_mpi(mp_image_t *dmpi, mp_image_t *mpi) { |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
84 if(mpi->flags&MP_IMGFLAG_PLANAR){ |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
85 memcpy_pic(dmpi->planes[0],mpi->planes[0], mpi->w, mpi->h, |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
86 dmpi->stride[0],mpi->stride[0]); |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
87 memcpy_pic(dmpi->planes[1],mpi->planes[1], mpi->chroma_width, mpi->chroma_height, |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
88 dmpi->stride[1],mpi->stride[1]); |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
89 memcpy_pic(dmpi->planes[2], mpi->planes[2], mpi->chroma_width, mpi->chroma_height, |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
90 dmpi->stride[2],mpi->stride[2]); |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
91 } else { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28594
diff
changeset
|
92 memcpy_pic(dmpi->planes[0],mpi->planes[0], |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
93 mpi->w*(dmpi->bpp/8), mpi->h, |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
94 dmpi->stride[0],mpi->stride[0]); |
23994
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
95 } |
8572d2ef5263
Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents:
diff
changeset
|
96 } |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
97 |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
98 void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
99 mpi->flags&=~(MP_IMGFLAG_PLANAR|MP_IMGFLAG_YUV|MP_IMGFLAG_SWAPPED); |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
100 mpi->imgfmt=out_fmt; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
101 // compressed formats |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
102 if(out_fmt == IMGFMT_MPEGPES || |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
103 out_fmt == IMGFMT_ZRMJPEGNI || out_fmt == IMGFMT_ZRMJPEGIT || out_fmt == IMGFMT_ZRMJPEGIB || |
32488 | 104 IMGFMT_IS_HWACCEL(out_fmt)){ |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
105 mpi->bpp=0; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
106 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
107 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
108 mpi->num_planes=1; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
109 if (IMGFMT_IS_RGB(out_fmt)) { |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
110 if (IMGFMT_RGB_DEPTH(out_fmt) < 8 && !(out_fmt&128)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
111 mpi->bpp = IMGFMT_RGB_DEPTH(out_fmt); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
112 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
113 mpi->bpp=(IMGFMT_RGB_DEPTH(out_fmt)+7)&(~7); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
114 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
115 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
116 if (IMGFMT_IS_BGR(out_fmt)) { |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
117 if (IMGFMT_BGR_DEPTH(out_fmt) < 8 && !(out_fmt&128)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
118 mpi->bpp = IMGFMT_BGR_DEPTH(out_fmt); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
119 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
120 mpi->bpp=(IMGFMT_BGR_DEPTH(out_fmt)+7)&(~7); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
121 mpi->flags|=MP_IMGFLAG_SWAPPED; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
122 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
123 } |
34157 | 124 mpi->num_planes=3; |
125 if (out_fmt == IMGFMT_GBR24P) { | |
126 mpi->bpp=24; | |
127 mpi->flags|=MP_IMGFLAG_PLANAR; | |
128 return; | |
129 } | |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
130 mpi->flags|=MP_IMGFLAG_YUV; |
33365
706871635af7
Make mp_get_chroma_shift simpler/more generic and add an argument
reimar
parents:
33364
diff
changeset
|
131 if (mp_get_chroma_shift(out_fmt, NULL, NULL, NULL)) { |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
132 mpi->flags|=MP_IMGFLAG_PLANAR; |
33365
706871635af7
Make mp_get_chroma_shift simpler/more generic and add an argument
reimar
parents:
33364
diff
changeset
|
133 mpi->bpp = mp_get_chroma_shift(out_fmt, &mpi->chroma_x_shift, &mpi->chroma_y_shift, NULL); |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
134 mpi->chroma_width = mpi->width >> mpi->chroma_x_shift; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
135 mpi->chroma_height = mpi->height >> mpi->chroma_y_shift; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
136 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
137 switch(out_fmt){ |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
138 case IMGFMT_I420: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
139 case IMGFMT_IYUV: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
140 mpi->flags|=MP_IMGFLAG_SWAPPED; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
141 case IMGFMT_YV12: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
142 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
143 case IMGFMT_420A: |
34565 | 144 case IMGFMT_444A: |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
145 case IMGFMT_IF09: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
146 mpi->num_planes=4; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
147 case IMGFMT_YVU9: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
148 case IMGFMT_444P: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
149 case IMGFMT_422P: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
150 case IMGFMT_411P: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
151 case IMGFMT_440P: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
152 case IMGFMT_444P16_LE: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
153 case IMGFMT_444P16_BE: |
34028 | 154 case IMGFMT_444P10_LE: |
155 case IMGFMT_444P10_BE: | |
34189 | 156 case IMGFMT_444P9_LE: |
157 case IMGFMT_444P9_BE: | |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
158 case IMGFMT_422P16_LE: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
159 case IMGFMT_422P16_BE: |
33364
e1ee4895e500
Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents:
32702
diff
changeset
|
160 case IMGFMT_422P10_LE: |
e1ee4895e500
Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents:
32702
diff
changeset
|
161 case IMGFMT_422P10_BE: |
34436 | 162 case IMGFMT_422P9_LE: |
163 case IMGFMT_422P9_BE: | |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
164 case IMGFMT_420P16_LE: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
165 case IMGFMT_420P16_BE: |
33364
e1ee4895e500
Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents:
32702
diff
changeset
|
166 case IMGFMT_420P10_LE: |
e1ee4895e500
Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents:
32702
diff
changeset
|
167 case IMGFMT_420P10_BE: |
e1ee4895e500
Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents:
32702
diff
changeset
|
168 case IMGFMT_420P9_LE: |
e1ee4895e500
Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents:
32702
diff
changeset
|
169 case IMGFMT_420P9_BE: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
170 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
171 case IMGFMT_Y800: |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
172 case IMGFMT_Y8: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
173 /* they're planar ones, but for easier handling use them as packed */ |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
174 mpi->flags&=~MP_IMGFLAG_PLANAR; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
175 mpi->num_planes=1; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
176 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
177 case IMGFMT_UYVY: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
178 mpi->flags|=MP_IMGFLAG_SWAPPED; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
179 case IMGFMT_YUY2: |
34267 | 180 mpi->chroma_x_shift = 1; |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
181 mpi->bpp=16; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
182 mpi->num_planes=1; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
183 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
184 case IMGFMT_NV12: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
185 mpi->flags|=MP_IMGFLAG_SWAPPED; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
186 case IMGFMT_NV21: |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
187 mpi->flags|=MP_IMGFLAG_PLANAR; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
188 mpi->bpp=12; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
189 mpi->num_planes=2; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
190 mpi->chroma_width=(mpi->width>>0); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
191 mpi->chroma_height=(mpi->height>>1); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
192 mpi->chroma_x_shift=0; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
193 mpi->chroma_y_shift=1; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
194 return; |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
195 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
196 mp_msg(MSGT_DECVIDEO,MSGL_WARN,"mp_image: unknown out_fmt: 0x%X\n",out_fmt); |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
197 mpi->bpp=0; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
198 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
199 |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
200 mp_image_t* new_mp_image(int w,int h){ |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
201 mp_image_t* mpi = malloc(sizeof(mp_image_t)); |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
202 if(!mpi) return NULL; // error! |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
203 memset(mpi,0,sizeof(mp_image_t)); |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
204 mpi->width=mpi->w=w; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
205 mpi->height=mpi->h=h; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
206 return mpi; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
207 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
208 |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
209 void free_mp_image(mp_image_t* mpi){ |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
210 if(!mpi) return; |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
211 if(mpi->flags&MP_IMGFLAG_ALLOCATED){ |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
212 /* becouse we allocate the whole image in once */ |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
213 av_free(mpi->planes[0]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
214 if (mpi->flags & MP_IMGFLAG_RGB_PALETTE) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
32537
diff
changeset
|
215 av_free(mpi->planes[1]); |
30996
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
216 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
217 free(mpi); |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
218 } |
6e9ece21c004
Move functions that really do not need to be inlined from the header
reimar
parents:
30421
diff
changeset
|
219 |