diff options
author | wm4 <wm4@nowhere> | 2017-02-17 13:51:03 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-02-17 13:51:03 +0100 |
commit | b5bbcc9f930eaf61e149a6cd7cc61712107f50ed (patch) | |
tree | f9dc0785cec0229e7d4d80cd74565387b53b07cc /video | |
parent | 1e4fd996bb249a773bad5d57ac5b724be52a09af (diff) | |
download | mpv-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.c | 25 | ||||
-rw-r--r-- | video/vt.h | 1 |
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; |