diff options
Diffstat (limited to 'video/fmt-conversion.c')
-rw-r--r-- | video/fmt-conversion.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/video/fmt-conversion.c b/video/fmt-conversion.c index 5624f4aacf..68d1487283 100644 --- a/video/fmt-conversion.c +++ b/video/fmt-conversion.c @@ -187,6 +187,15 @@ enum AVPixelFormat imgfmt2pixfmt(int fmt) if (fmt == IMGFMT_NONE) return AV_PIX_FMT_NONE; + if (fmt >= IMGFMT_AVPIXFMT_START && fmt < IMGFMT_AVPIXFMT_END) { + enum AVPixelFormat pixfmt = fmt - IMGFMT_AVPIXFMT_START; + // Avoid duplicate format - each format must be unique. + int mpfmt = pixfmt2imgfmt(pixfmt); + if (mpfmt == fmt) + return pixfmt; + return AV_PIX_FMT_NONE; + } + for (int i = 0; conversion_map[i].fmt; i++) { if (conversion_map[i].fmt == fmt) return conversion_map[i].pix_fmt; @@ -203,5 +212,10 @@ int pixfmt2imgfmt(enum AVPixelFormat pix_fmt) if (conversion_map[i].pix_fmt == pix_fmt) return conversion_map[i].fmt; } + + int generic = IMGFMT_AVPIXFMT_START + pix_fmt; + if (generic < IMGFMT_AVPIXFMT_END) + return generic; + return 0; } |