annotate fmt-conversion.c @ 35490:a5f5f61a7a35

Replace confusing guiInfoMediumClear() by MediumPrepare(). (It has been completely rewritten.) Now call MediumPrepare() only once for all play events. Check for current StreamType and clear stuff not being used for this stream type (and only stuff that need to be cleared).
author ib
date Mon, 03 Dec 2012 16:26:39 +0000
parents 19212dea7a97
children 4ba6b8d3197e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28526
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
1 /*
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
2 * This file is part of MPlayer.
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
3 *
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
7 * (at your option) any later version.
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
8 *
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
12 * GNU General Public License for more details.
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
13 *
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License along
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
17 */
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
18
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
19 #include "mp_msg.h"
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
20 #include "libavutil/avutil.h"
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
21 #include "libmpcodecs/img_format.h"
33533
3552dac79b1a Add some missing libavutil #includes.
diego
parents: 33364
diff changeset
22 #include "libavutil/pixfmt.h"
32905
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
23 #include "libavutil/samplefmt.h"
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
24 #include "libaf/af_format.h"
28526
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
25 #include "fmt-conversion.h"
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
26
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
27 static const struct {
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
28 int fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
29 enum PixelFormat pix_fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
30 } conversion_map[] = {
34191
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
31 {IMGFMT_ARGB, PIX_FMT_ARGB},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
32 {IMGFMT_BGRA, PIX_FMT_BGRA},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
33 {IMGFMT_BGR24, PIX_FMT_BGR24},
30311
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
34 {IMGFMT_BGR16BE, PIX_FMT_RGB565BE},
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
35 {IMGFMT_BGR16LE, PIX_FMT_RGB565LE},
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
36 {IMGFMT_BGR15BE, PIX_FMT_RGB555BE},
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
37 {IMGFMT_BGR15LE, PIX_FMT_RGB555LE},
31082
92f88bb315c5 Add support for 12-bit color mode on framebuffer devices.
cehoyos
parents: 30311
diff changeset
38 {IMGFMT_BGR12BE, PIX_FMT_RGB444BE},
92f88bb315c5 Add support for 12-bit color mode on framebuffer devices.
cehoyos
parents: 30311
diff changeset
39 {IMGFMT_BGR12LE, PIX_FMT_RGB444LE},
34191
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
40 {IMGFMT_BGR8, PIX_FMT_RGB8},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
41 {IMGFMT_BGR4, PIX_FMT_RGB4},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
42 {IMGFMT_BGR1, PIX_FMT_MONOBLACK},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
43 {IMGFMT_RGB1, PIX_FMT_MONOBLACK},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
44 {IMGFMT_RG4B, PIX_FMT_BGR4_BYTE},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
45 {IMGFMT_BG4B, PIX_FMT_RGB4_BYTE},
29445
3e9db1ac8cf1 Map IMGFMT_RGB48xE to PIX_FMT_RGB48xE.
cehoyos
parents: 29078
diff changeset
46 {IMGFMT_RGB48LE, PIX_FMT_RGB48LE},
3e9db1ac8cf1 Map IMGFMT_RGB48xE to PIX_FMT_RGB48xE.
cehoyos
parents: 29078
diff changeset
47 {IMGFMT_RGB48BE, PIX_FMT_RGB48BE},
34191
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
48 {IMGFMT_ABGR, PIX_FMT_ABGR},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
49 {IMGFMT_RGBA, PIX_FMT_RGBA},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
50 {IMGFMT_RGB24, PIX_FMT_RGB24},
30311
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
51 {IMGFMT_RGB16BE, PIX_FMT_BGR565BE},
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
52 {IMGFMT_RGB16LE, PIX_FMT_BGR565LE},
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
53 {IMGFMT_RGB15BE, PIX_FMT_BGR555BE},
8a67140f5fc1 Add big- and little-endian variants of the 15 and 16 bit RGB/BGR formats.
reimar
parents: 30309
diff changeset
54 {IMGFMT_RGB15LE, PIX_FMT_BGR555LE},
31082
92f88bb315c5 Add support for 12-bit color mode on framebuffer devices.
cehoyos
parents: 30311
diff changeset
55 {IMGFMT_RGB12BE, PIX_FMT_BGR444BE},
92f88bb315c5 Add support for 12-bit color mode on framebuffer devices.
cehoyos
parents: 30311
diff changeset
56 {IMGFMT_RGB12LE, PIX_FMT_BGR444LE},
34191
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
57 {IMGFMT_RGB8, PIX_FMT_BGR8},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
58 {IMGFMT_RGB4, PIX_FMT_BGR4},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
59 {IMGFMT_BGR8, PIX_FMT_PAL8},
34414
6f48ca5471b6 fmt-conversion.c: add a remark about the usage of #ifdef directives
siretart
parents: 34404
diff changeset
60 // NB: This works only because PIX_FMT_0RGB32 is a CPP Macro.
6f48ca5471b6 fmt-conversion.c: add a remark about the usage of #ifdef directives
siretart
parents: 34404
diff changeset
61 // note that most other PIX_FMT values are enums
34404
95f802285711 Allow compilation with Libav
siretart
parents: 34276
diff changeset
62 #ifdef PIX_FMT_0RGB32
34276
ba5fdd2fa980 Support RGB FFV1 videos without transparency.
cehoyos
parents: 34213
diff changeset
63 {IMGFMT_BGR32, PIX_FMT_0RGB32},
34512
01c1e065120e Support 32-bit sunrast playback via FFmpeg.
cehoyos
parents: 34436
diff changeset
64 {IMGFMT_BGRA, PIX_FMT_BGR0},
01c1e065120e Support 32-bit sunrast playback via FFmpeg.
cehoyos
parents: 34436
diff changeset
65 {IMGFMT_RGBA, PIX_FMT_RGB0},
34572
2a372b469420 Support displaying 64bit RGB via OpenGL.
cehoyos
parents: 34565
diff changeset
66 {IMGFMT_RGB64LE, PIX_FMT_RGBA64LE},
2a372b469420 Support displaying 64bit RGB via OpenGL.
cehoyos
parents: 34565
diff changeset
67 {IMGFMT_RGB64BE, PIX_FMT_RGBA64BE},
34805
0eba64545a27 Improve Avid Meridien (AVUI) decoding with FFmpeg.
cehoyos
parents: 34572
diff changeset
68 {IMGFMT_422A, PIX_FMT_YUVA422P},
34565
25acb5f98cb4 Support v408 and AYUV decoding via FFmpeg.
cehoyos
parents: 34512
diff changeset
69 {IMGFMT_444A, PIX_FMT_YUVA444P},
34404
95f802285711 Allow compilation with Libav
siretart
parents: 34276
diff changeset
70 #endif
34213
7d93d0f72802 fmt_conversion: surround PIX_FMT_GBR24P by #ifdefs to ensure availability
diego
parents: 34191
diff changeset
71 #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 20, 1)
34404
95f802285711 Allow compilation with Libav
siretart
parents: 34276
diff changeset
72 {IMGFMT_GBR24P, PIX_FMT_GBRP},
34923
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
73 {IMGFMT_GBR12PLE, PIX_FMT_GBRP12LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
74 {IMGFMT_GBR12PBE, PIX_FMT_GBRP12BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
75 {IMGFMT_GBR14PLE, PIX_FMT_GBRP14LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
76 {IMGFMT_GBR14PBE, PIX_FMT_GBRP14BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
77 {IMGFMT_420P14_LE, PIX_FMT_YUV420P14LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
78 {IMGFMT_420P14_BE, PIX_FMT_YUV420P14BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
79 {IMGFMT_420P12_LE, PIX_FMT_YUV420P12LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
80 {IMGFMT_420P12_BE, PIX_FMT_YUV420P12BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
81 {IMGFMT_422P14_LE, PIX_FMT_YUV422P14LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
82 {IMGFMT_422P14_BE, PIX_FMT_YUV422P14BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
83 {IMGFMT_422P12_LE, PIX_FMT_YUV422P12LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
84 {IMGFMT_422P12_BE, PIX_FMT_YUV422P12BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
85 {IMGFMT_444P14_LE, PIX_FMT_YUV444P14LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
86 {IMGFMT_444P14_BE, PIX_FMT_YUV444P14BE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
87 {IMGFMT_444P12_LE, PIX_FMT_YUV444P12LE},
eb76937af57e Support FFmpeg pix_fmts YUV4xxP12*, YUV4xxP14*, GBR12P* and GBR14P*.
cehoyos
parents: 34805
diff changeset
88 {IMGFMT_444P12_BE, PIX_FMT_YUV444P12BE},
34932
19212dea7a97 Add missing aequivalents for PIX_FMT_GRAY8A and PIX_FMT_GRAY16*.
cehoyos
parents: 34923
diff changeset
89 {IMGFMT_Y8A, PIX_FMT_GRAY8A},
34213
7d93d0f72802 fmt_conversion: surround PIX_FMT_GBR24P by #ifdefs to ensure availability
diego
parents: 34191
diff changeset
90 #endif
34932
19212dea7a97 Add missing aequivalents for PIX_FMT_GRAY8A and PIX_FMT_GRAY16*.
cehoyos
parents: 34923
diff changeset
91 {IMGFMT_Y16_LE, PIX_FMT_GRAY16LE},
19212dea7a97 Add missing aequivalents for PIX_FMT_GRAY8A and PIX_FMT_GRAY16*.
cehoyos
parents: 34923
diff changeset
92 {IMGFMT_Y16_BE, PIX_FMT_GRAY16BE},
34191
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
93 {IMGFMT_YUY2, PIX_FMT_YUYV422},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
94 {IMGFMT_UYVY, PIX_FMT_UYVY422},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
95 {IMGFMT_NV12, PIX_FMT_NV12},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
96 {IMGFMT_NV21, PIX_FMT_NV21},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
97 {IMGFMT_Y800, PIX_FMT_GRAY8},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
98 {IMGFMT_Y8, PIX_FMT_GRAY8},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
99 {IMGFMT_YVU9, PIX_FMT_YUV410P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
100 {IMGFMT_IF09, PIX_FMT_YUV410P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
101 {IMGFMT_YV12, PIX_FMT_YUV420P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
102 {IMGFMT_I420, PIX_FMT_YUV420P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
103 {IMGFMT_IYUV, PIX_FMT_YUV420P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
104 {IMGFMT_411P, PIX_FMT_YUV411P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
105 {IMGFMT_422P, PIX_FMT_YUV422P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
106 {IMGFMT_444P, PIX_FMT_YUV444P},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
107 {IMGFMT_440P, PIX_FMT_YUV440P},
30115
ad61464d02a7 Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents: 30110
diff changeset
108
ad61464d02a7 Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents: 30110
diff changeset
109 {IMGFMT_420A, PIX_FMT_YUVA420P},
ad61464d02a7 Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents: 30110
diff changeset
110
30110
19414a605695 Add support for 16-bit per component YUV formats.
reimar
parents: 30098
diff changeset
111 {IMGFMT_420P16_LE, PIX_FMT_YUV420P16LE},
19414a605695 Add support for 16-bit per component YUV formats.
reimar
parents: 30098
diff changeset
112 {IMGFMT_420P16_BE, PIX_FMT_YUV420P16BE},
33364
e1ee4895e500 Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents: 32908
diff changeset
113 {IMGFMT_420P10_LE, PIX_FMT_YUV420P10LE},
e1ee4895e500 Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents: 32908
diff changeset
114 {IMGFMT_420P10_BE, PIX_FMT_YUV420P10BE},
e1ee4895e500 Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents: 32908
diff changeset
115 {IMGFMT_420P9_LE, PIX_FMT_YUV420P9LE},
e1ee4895e500 Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents: 32908
diff changeset
116 {IMGFMT_420P9_BE, PIX_FMT_YUV420P9BE},
30110
19414a605695 Add support for 16-bit per component YUV formats.
reimar
parents: 30098
diff changeset
117 {IMGFMT_422P16_LE, PIX_FMT_YUV422P16LE},
19414a605695 Add support for 16-bit per component YUV formats.
reimar
parents: 30098
diff changeset
118 {IMGFMT_422P16_BE, PIX_FMT_YUV422P16BE},
33364
e1ee4895e500 Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents: 32908
diff changeset
119 {IMGFMT_422P10_LE, PIX_FMT_YUV422P10LE},
e1ee4895e500 Support displaying of 9- and 10-bit pixel formats,
cehoyos
parents: 32908
diff changeset
120 {IMGFMT_422P10_BE, PIX_FMT_YUV422P10BE},
34436
8a96cf601e57 Add support for 422P9.
reimar
parents: 34414
diff changeset
121 {IMGFMT_422P9_LE, PIX_FMT_YUV422P9LE},
8a96cf601e57 Add support for 422P9.
reimar
parents: 34414
diff changeset
122 {IMGFMT_422P9_BE, PIX_FMT_YUV422P9BE},
30110
19414a605695 Add support for 16-bit per component YUV formats.
reimar
parents: 30098
diff changeset
123 {IMGFMT_444P16_LE, PIX_FMT_YUV444P16LE},
19414a605695 Add support for 16-bit per component YUV formats.
reimar
parents: 30098
diff changeset
124 {IMGFMT_444P16_BE, PIX_FMT_YUV444P16BE},
34028
cf2a4f4cac0e Add 444P10 support.
cehoyos
parents: 33533
diff changeset
125 {IMGFMT_444P10_LE, PIX_FMT_YUV444P10LE},
cf2a4f4cac0e Add 444P10 support.
cehoyos
parents: 33533
diff changeset
126 {IMGFMT_444P10_BE, PIX_FMT_YUV444P10BE},
34191
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
127 {IMGFMT_444P9_LE, PIX_FMT_YUV444P9LE},
47e1375c4d79 Whitespace cosmetics: Align some IMGFMT-lists.
cehoyos
parents: 34189
diff changeset
128 {IMGFMT_444P9_BE, PIX_FMT_YUV444P9BE},
28631
70a43ec47c61 Re-add accidentally discarded comment about YUVJ format.
reimar
parents: 28526
diff changeset
129
70a43ec47c61 Re-add accidentally discarded comment about YUVJ format.
reimar
parents: 28526
diff changeset
130 // YUVJ are YUV formats that use the full Y range and not just
70a43ec47c61 Re-add accidentally discarded comment about YUVJ format.
reimar
parents: 28526
diff changeset
131 // 16 - 235 (see colorspaces.txt).
70a43ec47c61 Re-add accidentally discarded comment about YUVJ format.
reimar
parents: 28526
diff changeset
132 // Currently they are all treated the same way.
70a43ec47c61 Re-add accidentally discarded comment about YUVJ format.
reimar
parents: 28526
diff changeset
133 {IMGFMT_YV12, PIX_FMT_YUVJ420P},
28526
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
134 {IMGFMT_422P, PIX_FMT_YUVJ422P},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
135 {IMGFMT_444P, PIX_FMT_YUVJ444P},
30098
834af9d1e3e9 Add support for 440p colorspace.
reimar
parents: 29843
diff changeset
136 {IMGFMT_440P, PIX_FMT_YUVJ440P},
28631
70a43ec47c61 Re-add accidentally discarded comment about YUVJ format.
reimar
parents: 28526
diff changeset
137
28526
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
138 {IMGFMT_XVMC_MOCO_MPEG2, PIX_FMT_XVMC_MPEG2_MC},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
139 {IMGFMT_XVMC_IDCT_MPEG2, PIX_FMT_XVMC_MPEG2_IDCT},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
140 {IMGFMT_VDPAU_MPEG1, PIX_FMT_VDPAU_MPEG1},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
141 {IMGFMT_VDPAU_MPEG2, PIX_FMT_VDPAU_MPEG2},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
142 {IMGFMT_VDPAU_H264, PIX_FMT_VDPAU_H264},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
143 {IMGFMT_VDPAU_WMV3, PIX_FMT_VDPAU_WMV3},
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
144 {IMGFMT_VDPAU_VC1, PIX_FMT_VDPAU_VC1},
29843
f6d56a15f1d8 Support VDPAU hardware accelerated decoding of MPEG-4 ASP on capable
cehoyos
parents: 29445
diff changeset
145 {IMGFMT_VDPAU_MPEG4, PIX_FMT_VDPAU_MPEG4},
28526
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
146 {0, PIX_FMT_NONE}
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
147 };
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
148
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
149 enum PixelFormat imgfmt2pixfmt(int fmt)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
150 {
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
151 int i;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
152 enum PixelFormat pix_fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
153 for (i = 0; conversion_map[i].fmt; i++)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
154 if (conversion_map[i].fmt == fmt)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
155 break;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
156 pix_fmt = conversion_map[i].pix_fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
157 if (pix_fmt == PIX_FMT_NONE)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
158 mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported format %s\n", vo_format_name(fmt));
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
159 return pix_fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
160 }
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
161
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
162 int pixfmt2imgfmt(enum PixelFormat pix_fmt)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
163 {
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
164 int i;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
165 int fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
166 for (i = 0; conversion_map[i].pix_fmt != PIX_FMT_NONE; i++)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
167 if (conversion_map[i].pix_fmt == pix_fmt)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
168 break;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
169 fmt = conversion_map[i].fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
170 if (!fmt)
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
171 mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported PixelFormat %i\n", pix_fmt);
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
172 return fmt;
21efa4282730 Create a fmt-conversion.c file so fmt-conversion.h can be included by multiple files.
reimar
parents:
diff changeset
173 }
32905
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
174
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
175 static const struct {
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
176 int fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
177 enum AVSampleFormat sample_fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
178 } samplefmt_conversion_map[] = {
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
179 {AF_FORMAT_U8, AV_SAMPLE_FMT_U8},
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
180 {AF_FORMAT_S16_NE, AV_SAMPLE_FMT_S16},
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
181 {AF_FORMAT_S32_NE, AV_SAMPLE_FMT_S32},
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
182 {AF_FORMAT_FLOAT_NE, AV_SAMPLE_FMT_FLT},
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
183 {0, AV_SAMPLE_FMT_NONE}
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
184 };
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
185
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
186 enum AVSampleFormat affmt2samplefmt(int fmt)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
187 {
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
188 char str[50];
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
189 int i;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
190 enum AVSampleFormat sample_fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
191 for (i = 0; samplefmt_conversion_map[i].fmt; i++)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
192 if (samplefmt_conversion_map[i].fmt == fmt)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
193 break;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
194 sample_fmt = samplefmt_conversion_map[i].sample_fmt;
32908
c93ae40fb504 Fix copy-and-paste error: Should be AV_SAMPLE_FMT_NONE instead of PIX_FMT_NONE.
reimar
parents: 32905
diff changeset
195 if (sample_fmt == AV_SAMPLE_FMT_NONE)
32905
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
196 mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported format %s\n",
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
197 af_fmt2str(fmt, str, sizeof(str)));
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
198 return sample_fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
199 }
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
200
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
201 int samplefmt2affmt(enum AVSampleFormat sample_fmt)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
202 {
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
203 int i;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
204 int fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
205 for (i = 0; samplefmt_conversion_map[i].sample_fmt != AV_SAMPLE_FMT_NONE; i++)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
206 if (samplefmt_conversion_map[i].sample_fmt == sample_fmt)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
207 break;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
208 fmt = samplefmt_conversion_map[i].fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
209 if (!fmt)
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
210 mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported AVSampleFormat %i\n", sample_fmt);
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
211 return fmt;
fd60388d370a Add conversion functions to and from AVSampleFormat.
reimar
parents: 31082
diff changeset
212 }