summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-02-17 13:51:03 +0100
committerwm4 <wm4@nowhere>2017-02-17 13:51:03 +0100
commitb5bbcc9f930eaf61e149a6cd7cc61712107f50ed (patch)
treef9dc0785cec0229e7d4d80cd74565387b53b07cc /video
parent1e4fd996bb249a773bad5d57ac5b724be52a09af (diff)
downloadmpv-b5bbcc9f930eaf61e149a6cd7cc61712107f50ed.tar.bz2
mpv-b5bbcc9f930eaf61e149a6cd7cc61712107f50ed.tar.xz
videotoolbox: add reverse format mapping function
Introduce mp_imgfmt_to_cvpixelformat(), and change the existing mp_imgfmt_from_cvpixelformat() to a table to avoid duplication.
Diffstat (limited to 'video')
-rw-r--r--video/vt.c25
-rw-r--r--video/vt.h1
2 files changed, 21 insertions, 5 deletions
diff --git a/video/vt.c b/video/vt.c
index 04f410eedb..90c955049d 100644
--- a/video/vt.c
+++ b/video/vt.c
@@ -6,13 +6,28 @@
#include "mp_image_pool.h"
#include "vt.h"
+static const uint32_t map_imgfmt_cvpixfmt[][2] = {
+ {IMGFMT_420P, kCVPixelFormatType_420YpCbCr8Planar},
+ {IMGFMT_UYVY, kCVPixelFormatType_422YpCbCr8},
+ {IMGFMT_RGB0, kCVPixelFormatType_32BGRA},
+ {IMGFMT_NV12, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange},
+ {0}
+};
+
+uint32_t mp_imgfmt_to_cvpixelformat(int mpfmt)
+{
+ for (int n = 0; map_imgfmt_cvpixfmt[n][0]; n++) {
+ if (map_imgfmt_cvpixfmt[n][0] == mpfmt)
+ return map_imgfmt_cvpixfmt[n][1];
+ }
+ return 0;
+}
+
int mp_imgfmt_from_cvpixelformat(uint32_t cvpixfmt)
{
- switch (cvpixfmt) {
- case kCVPixelFormatType_420YpCbCr8Planar: return IMGFMT_420P;
- case kCVPixelFormatType_422YpCbCr8: return IMGFMT_UYVY;
- case kCVPixelFormatType_32BGRA: return IMGFMT_RGB0;
- case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: return IMGFMT_NV12;
+ for (int n = 0; map_imgfmt_cvpixfmt[n][0]; n++) {
+ if (map_imgfmt_cvpixfmt[n][1] == cvpixfmt)
+ return map_imgfmt_cvpixfmt[n][0];
}
return 0;
}
diff --git a/video/vt.h b/video/vt.h
index e4ad5f021b..e488f29cf0 100644
--- a/video/vt.h
+++ b/video/vt.h
@@ -4,6 +4,7 @@
#include <stdint.h>
int mp_imgfmt_from_cvpixelformat(uint32_t cvpixfmt);
+uint32_t mp_imgfmt_to_cvpixelformat(int mpfmt);
struct mp_image;
struct mp_image_pool;