1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include <mlib_types.h>
- #include <mlib_status.h>
- #include <mlib_sys.h>
- #include <mlib_video.h>
- #include <inttypes.h>
- #include <stdlib.h>
- #include <assert.h>
- #include "libswscale/swscale.h"
- #include "libswscale/swscale_internal.h"
- static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
- int srcSliceH, uint8_t* dst[], int dstStride[])
- {
- if(c->srcFormat == PIX_FMT_YUV422P) {
- srcStride[1] *= 2;
- srcStride[2] *= 2;
- }
- assert(srcStride[1] == srcStride[2]);
- mlib_VideoColorYUV2ARGB420(dst[0]+srcSliceY*dstStride[0], src[0], src[1], src[2], c->dstW,
- srcSliceH, dstStride[0], srcStride[0], srcStride[1]);
- return srcSliceH;
- }
- static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
- int srcSliceH, uint8_t* dst[], int dstStride[])
- {
- if(c->srcFormat == PIX_FMT_YUV422P) {
- srcStride[1] *= 2;
- srcStride[2] *= 2;
- }
- assert(srcStride[1] == srcStride[2]);
- mlib_VideoColorYUV2ABGR420(dst[0]+srcSliceY*dstStride[0], src[0], src[1], src[2], c->dstW,
- srcSliceH, dstStride[0], srcStride[0], srcStride[1]);
- return srcSliceH;
- }
- static int mlib_YUV2RGB420_24(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
- int srcSliceH, uint8_t* dst[], int dstStride[])
- {
- if(c->srcFormat == PIX_FMT_YUV422P) {
- srcStride[1] *= 2;
- srcStride[2] *= 2;
- }
- assert(srcStride[1] == srcStride[2]);
- mlib_VideoColorYUV2RGB420(dst[0]+srcSliceY*dstStride[0], src[0], src[1], src[2], c->dstW,
- srcSliceH, dstStride[0], srcStride[0], srcStride[1]);
- return srcSliceH;
- }
- SwsFunc ff_yuv2rgb_init_mlib(SwsContext *c)
- {
- switch(c->dstFormat) {
- case PIX_FMT_RGB24: return mlib_YUV2RGB420_24;
- case PIX_FMT_BGR32: return mlib_YUV2ARGB420_32;
- case PIX_FMT_RGB32: return mlib_YUV2ABGR420_32;
- default: return NULL;
- }
- }
|