0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 12:02:23 +02:00

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.
This commit is contained in:
wm4 2017-02-17 13:51:03 +01:00
parent 1e4fd996bb
commit b5bbcc9f93
2 changed files with 21 additions and 5 deletions

View File

@ -6,13 +6,28 @@
#include "mp_image_pool.h" #include "mp_image_pool.h"
#include "vt.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) int mp_imgfmt_from_cvpixelformat(uint32_t cvpixfmt)
{ {
switch (cvpixfmt) { for (int n = 0; map_imgfmt_cvpixfmt[n][0]; n++) {
case kCVPixelFormatType_420YpCbCr8Planar: return IMGFMT_420P; if (map_imgfmt_cvpixfmt[n][1] == cvpixfmt)
case kCVPixelFormatType_422YpCbCr8: return IMGFMT_UYVY; return map_imgfmt_cvpixfmt[n][0];
case kCVPixelFormatType_32BGRA: return IMGFMT_RGB0;
case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: return IMGFMT_NV12;
} }
return 0; return 0;
} }

View File

@ -4,6 +4,7 @@
#include <stdint.h> #include <stdint.h>
int mp_imgfmt_from_cvpixelformat(uint32_t cvpixfmt); int mp_imgfmt_from_cvpixelformat(uint32_t cvpixfmt);
uint32_t mp_imgfmt_to_cvpixelformat(int mpfmt);
struct mp_image; struct mp_image;
struct mp_image_pool; struct mp_image_pool;