diff options
Diffstat (limited to 'decoder/LAVVideo/decoders/avcodec.cpp')
-rw-r--r-- | decoder/LAVVideo/decoders/avcodec.cpp | 242 |
1 files changed, 121 insertions, 121 deletions
diff --git a/decoder/LAVVideo/decoders/avcodec.cpp b/decoder/LAVVideo/decoders/avcodec.cpp index 965deff5..43e78f05 100644 --- a/decoder/LAVVideo/decoders/avcodec.cpp +++ b/decoder/LAVVideo/decoders/avcodec.cpp @@ -105,7 +105,7 @@ static DXVA2_ExtendedFormat GetDXVA2ExtendedFlags(AVCodecContext *ctx, AVFrame * } // Color Range, 0-255 or 16-235 - BOOL ffFullRange = (ctx->color_range == AVCOL_RANGE_JPEG) || frame->format == PIX_FMT_YUVJ420P || frame->format == PIX_FMT_YUVJ422P || frame->format == PIX_FMT_YUVJ444P || frame->format == PIX_FMT_YUVJ440P; + BOOL ffFullRange = (ctx->color_range == AVCOL_RANGE_JPEG) || frame->format == AV_PIX_FMT_YUVJ420P || frame->format == AV_PIX_FMT_YUVJ422P || frame->format == AV_PIX_FMT_YUVJ444P || frame->format == AV_PIX_FMT_YUVJ440P; fmt.NominalRange = ffFullRange ? DXVA2_NominalRange_0_255 : (ctx->color_range == AVCOL_RANGE_MPEG) ? DXVA2_NominalRange_16_235 : DXVA2_NominalRange_Unknown; return fmt; @@ -123,121 +123,121 @@ static struct PixelFormatMapping { BOOL conversion; int bpp; } ff_pix_map[] = { - { PIX_FMT_YUV420P, LAVPixFmt_YUV420, FALSE }, - { PIX_FMT_YUYV422, LAVPixFmt_YUY2, FALSE }, - { PIX_FMT_RGB24, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR24, LAVPixFmt_RGB24, FALSE }, - { PIX_FMT_YUV422P, LAVPixFmt_YUV422, FALSE }, - { PIX_FMT_YUV444P, LAVPixFmt_YUV444, FALSE }, - { PIX_FMT_YUV410P, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_YUV411P, LAVPixFmt_YUV422, TRUE }, - { PIX_FMT_GRAY8, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_MONOWHITE, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_MONOBLACK, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_PAL8, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_YUVJ420P, LAVPixFmt_YUV420, FALSE }, - { PIX_FMT_YUVJ422P, LAVPixFmt_YUV422, FALSE }, - { PIX_FMT_YUVJ444P, LAVPixFmt_YUV444, FALSE }, - { PIX_FMT_UYVY422, LAVPixFmt_YUV422, TRUE }, - { PIX_FMT_UYYVYY411, LAVPixFmt_YUV422, TRUE }, - { PIX_FMT_BGR8, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR4, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR4_BYTE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB8, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB4, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB4_BYTE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_NV12, LAVPixFmt_NV12, FALSE }, - { PIX_FMT_NV21, LAVPixFmt_NV12, TRUE }, - - { PIX_FMT_ARGB, LAVPixFmt_ARGB32, TRUE }, - { PIX_FMT_RGBA, LAVPixFmt_ARGB32, TRUE }, - { PIX_FMT_ABGR, LAVPixFmt_ARGB32, TRUE }, - { PIX_FMT_BGRA, LAVPixFmt_ARGB32, FALSE }, - - { PIX_FMT_GRAY16BE, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_GRAY16LE, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_YUV440P, LAVPixFmt_YUV444, TRUE }, - { PIX_FMT_YUVJ440P, LAVPixFmt_YUV444, TRUE }, - { PIX_FMT_YUVA420P, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_RGB48BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_RGB48LE, LAVPixFmt_RGB48, TRUE }, - - { PIX_FMT_RGB565BE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB565LE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB555BE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB555LE, LAVPixFmt_RGB32, TRUE }, - - { PIX_FMT_BGR565BE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR565LE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR555BE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR555LE, LAVPixFmt_RGB32, TRUE }, - - { PIX_FMT_YUV420P16LE, LAVPixFmt_YUV420bX, FALSE, 16 }, - { PIX_FMT_YUV420P16BE, LAVPixFmt_YUV420bX, TRUE, 16 }, - { PIX_FMT_YUV422P16LE, LAVPixFmt_YUV422bX, FALSE, 16 }, - { PIX_FMT_YUV422P16BE, LAVPixFmt_YUV422bX, TRUE, 16 }, - { PIX_FMT_YUV444P16LE, LAVPixFmt_YUV444bX, FALSE, 16 }, - { PIX_FMT_YUV444P16BE, LAVPixFmt_YUV444bX, TRUE, 16 }, - - { PIX_FMT_RGB444LE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB444BE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR444LE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR444BE, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_GRAY8A, LAVPixFmt_YUV420, TRUE }, - { PIX_FMT_BGR48BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_BGR48LE, LAVPixFmt_RGB48, FALSE }, - - { PIX_FMT_YUV420P9BE, LAVPixFmt_YUV420bX, TRUE, 9 }, - { PIX_FMT_YUV420P9LE, LAVPixFmt_YUV420bX, FALSE, 9 }, - { PIX_FMT_YUV420P10BE, LAVPixFmt_YUV420bX, TRUE, 10 }, - { PIX_FMT_YUV420P10LE, LAVPixFmt_YUV420bX, FALSE, 10 }, - { PIX_FMT_YUV422P10BE, LAVPixFmt_YUV422bX, TRUE, 10 }, - { PIX_FMT_YUV422P10LE, LAVPixFmt_YUV422bX, FALSE, 10 }, - { PIX_FMT_YUV444P9BE, LAVPixFmt_YUV444bX, TRUE, 9 }, - { PIX_FMT_YUV444P9LE, LAVPixFmt_YUV444bX, FALSE, 9 }, - { PIX_FMT_YUV444P10BE, LAVPixFmt_YUV444bX, TRUE, 10 }, - { PIX_FMT_YUV444P10LE, LAVPixFmt_YUV444bX, FALSE, 10 }, - { PIX_FMT_YUV422P9BE, LAVPixFmt_YUV422bX, TRUE, 9 }, - { PIX_FMT_YUV422P9LE, LAVPixFmt_YUV422bX, FALSE, 9 }, - - { PIX_FMT_GBRP, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_GBRP9BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP9LE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP10BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP10LE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP16BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP16LE, LAVPixFmt_RGB48, TRUE }, - - { PIX_FMT_RGBA64BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_RGBA64LE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_BGRA64BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_BGRA64LE, LAVPixFmt_RGB48, TRUE }, - - { PIX_FMT_0RGB, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_RGB0, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_0BGR, LAVPixFmt_RGB32, TRUE }, - { PIX_FMT_BGR0, LAVPixFmt_RGB32, FALSE }, - { PIX_FMT_YUVA444P, LAVPixFmt_YUV444, TRUE }, - { PIX_FMT_YUVA422P, LAVPixFmt_YUV422, TRUE }, - - { PIX_FMT_YUV420P12BE, LAVPixFmt_YUV420bX, TRUE, 12 }, - { PIX_FMT_YUV420P12LE, LAVPixFmt_YUV420bX, FALSE, 12 }, - { PIX_FMT_YUV420P14BE, LAVPixFmt_YUV420bX, TRUE, 14 }, - { PIX_FMT_YUV420P14LE, LAVPixFmt_YUV420bX, FALSE, 14 }, - { PIX_FMT_YUV422P12BE, LAVPixFmt_YUV422bX, TRUE, 12 }, - { PIX_FMT_YUV422P12LE, LAVPixFmt_YUV422bX, FALSE, 12 }, - { PIX_FMT_YUV422P14BE, LAVPixFmt_YUV422bX, TRUE, 14 }, - { PIX_FMT_YUV422P14LE, LAVPixFmt_YUV422bX, FALSE, 14 }, - { PIX_FMT_YUV444P12BE, LAVPixFmt_YUV444bX, TRUE, 12 }, - { PIX_FMT_YUV444P12LE, LAVPixFmt_YUV444bX, FALSE, 12 }, - { PIX_FMT_YUV444P14BE, LAVPixFmt_YUV444bX, TRUE, 14 }, - { PIX_FMT_YUV444P14LE, LAVPixFmt_YUV444bX, FALSE, 14 }, - { PIX_FMT_GBRP12BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP12LE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP14BE, LAVPixFmt_RGB48, TRUE }, - { PIX_FMT_GBRP14LE, LAVPixFmt_RGB48, TRUE }, - - { PIX_FMT_DXVA2_VLD, LAVPixFmt_DXVA2, FALSE }, + { AV_PIX_FMT_YUV420P, LAVPixFmt_YUV420, FALSE }, + { AV_PIX_FMT_YUYV422, LAVPixFmt_YUY2, FALSE }, + { AV_PIX_FMT_RGB24, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR24, LAVPixFmt_RGB24, FALSE }, + { AV_PIX_FMT_YUV422P, LAVPixFmt_YUV422, FALSE }, + { AV_PIX_FMT_YUV444P, LAVPixFmt_YUV444, FALSE }, + { AV_PIX_FMT_YUV410P, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_YUV411P, LAVPixFmt_YUV422, TRUE }, + { AV_PIX_FMT_GRAY8, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_MONOWHITE, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_MONOBLACK, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_PAL8, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_YUVJ420P, LAVPixFmt_YUV420, FALSE }, + { AV_PIX_FMT_YUVJ422P, LAVPixFmt_YUV422, FALSE }, + { AV_PIX_FMT_YUVJ444P, LAVPixFmt_YUV444, FALSE }, + { AV_PIX_FMT_UYVY422, LAVPixFmt_YUV422, TRUE }, + { AV_PIX_FMT_UYYVYY411, LAVPixFmt_YUV422, TRUE }, + { AV_PIX_FMT_BGR8, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR4, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR4_BYTE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB8, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB4, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB4_BYTE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_NV12, LAVPixFmt_NV12, FALSE }, + { AV_PIX_FMT_NV21, LAVPixFmt_NV12, TRUE }, + + { AV_PIX_FMT_ARGB, LAVPixFmt_ARGB32, TRUE }, + { AV_PIX_FMT_RGBA, LAVPixFmt_ARGB32, TRUE }, + { AV_PIX_FMT_ABGR, LAVPixFmt_ARGB32, TRUE }, + { AV_PIX_FMT_BGRA, LAVPixFmt_ARGB32, FALSE }, + + { AV_PIX_FMT_GRAY16BE, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_GRAY16LE, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_YUV440P, LAVPixFmt_YUV444, TRUE }, + { AV_PIX_FMT_YUVJ440P, LAVPixFmt_YUV444, TRUE }, + { AV_PIX_FMT_YUVA420P, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_RGB48BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_RGB48LE, LAVPixFmt_RGB48, TRUE }, + + { AV_PIX_FMT_RGB565BE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB565LE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB555BE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB555LE, LAVPixFmt_RGB32, TRUE }, + + { AV_PIX_FMT_BGR565BE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR565LE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR555BE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR555LE, LAVPixFmt_RGB32, TRUE }, + + { AV_PIX_FMT_YUV420P16LE, LAVPixFmt_YUV420bX, FALSE, 16 }, + { AV_PIX_FMT_YUV420P16BE, LAVPixFmt_YUV420bX, TRUE, 16 }, + { AV_PIX_FMT_YUV422P16LE, LAVPixFmt_YUV422bX, FALSE, 16 }, + { AV_PIX_FMT_YUV422P16BE, LAVPixFmt_YUV422bX, TRUE, 16 }, + { AV_PIX_FMT_YUV444P16LE, LAVPixFmt_YUV444bX, FALSE, 16 }, + { AV_PIX_FMT_YUV444P16BE, LAVPixFmt_YUV444bX, TRUE, 16 }, + + { AV_PIX_FMT_RGB444LE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB444BE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR444LE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR444BE, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_GRAY8A, LAVPixFmt_YUV420, TRUE }, + { AV_PIX_FMT_BGR48BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_BGR48LE, LAVPixFmt_RGB48, FALSE }, + + { AV_PIX_FMT_YUV420P9BE, LAVPixFmt_YUV420bX, TRUE, 9 }, + { AV_PIX_FMT_YUV420P9LE, LAVPixFmt_YUV420bX, FALSE, 9 }, + { AV_PIX_FMT_YUV420P10BE, LAVPixFmt_YUV420bX, TRUE, 10 }, + { AV_PIX_FMT_YUV420P10LE, LAVPixFmt_YUV420bX, FALSE, 10 }, + { AV_PIX_FMT_YUV422P10BE, LAVPixFmt_YUV422bX, TRUE, 10 }, + { AV_PIX_FMT_YUV422P10LE, LAVPixFmt_YUV422bX, FALSE, 10 }, + { AV_PIX_FMT_YUV444P9BE, LAVPixFmt_YUV444bX, TRUE, 9 }, + { AV_PIX_FMT_YUV444P9LE, LAVPixFmt_YUV444bX, FALSE, 9 }, + { AV_PIX_FMT_YUV444P10BE, LAVPixFmt_YUV444bX, TRUE, 10 }, + { AV_PIX_FMT_YUV444P10LE, LAVPixFmt_YUV444bX, FALSE, 10 }, + { AV_PIX_FMT_YUV422P9BE, LAVPixFmt_YUV422bX, TRUE, 9 }, + { AV_PIX_FMT_YUV422P9LE, LAVPixFmt_YUV422bX, FALSE, 9 }, + + { AV_PIX_FMT_GBRP, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_GBRP9BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP9LE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP10BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP10LE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP16BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP16LE, LAVPixFmt_RGB48, TRUE }, + + { AV_PIX_FMT_RGBA64BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_RGBA64LE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_BGRA64BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_BGRA64LE, LAVPixFmt_RGB48, TRUE }, + + { AV_PIX_FMT_0RGB, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_RGB0, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_0BGR, LAVPixFmt_RGB32, TRUE }, + { AV_PIX_FMT_BGR0, LAVPixFmt_RGB32, FALSE }, + { AV_PIX_FMT_YUVA444P, LAVPixFmt_YUV444, TRUE }, + { AV_PIX_FMT_YUVA422P, LAVPixFmt_YUV422, TRUE }, + + { AV_PIX_FMT_YUV420P12BE, LAVPixFmt_YUV420bX, TRUE, 12 }, + { AV_PIX_FMT_YUV420P12LE, LAVPixFmt_YUV420bX, FALSE, 12 }, + { AV_PIX_FMT_YUV420P14BE, LAVPixFmt_YUV420bX, TRUE, 14 }, + { AV_PIX_FMT_YUV420P14LE, LAVPixFmt_YUV420bX, FALSE, 14 }, + { AV_PIX_FMT_YUV422P12BE, LAVPixFmt_YUV422bX, TRUE, 12 }, + { AV_PIX_FMT_YUV422P12LE, LAVPixFmt_YUV422bX, FALSE, 12 }, + { AV_PIX_FMT_YUV422P14BE, LAVPixFmt_YUV422bX, TRUE, 14 }, + { AV_PIX_FMT_YUV422P14LE, LAVPixFmt_YUV422bX, FALSE, 14 }, + { AV_PIX_FMT_YUV444P12BE, LAVPixFmt_YUV444bX, TRUE, 12 }, + { AV_PIX_FMT_YUV444P12LE, LAVPixFmt_YUV444bX, FALSE, 12 }, + { AV_PIX_FMT_YUV444P14BE, LAVPixFmt_YUV444bX, TRUE, 14 }, + { AV_PIX_FMT_YUV444P14LE, LAVPixFmt_YUV444bX, FALSE, 14 }, + { AV_PIX_FMT_GBRP12BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP12LE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP14BE, LAVPixFmt_RGB48, TRUE }, + { AV_PIX_FMT_GBRP14LE, LAVPixFmt_RGB48, TRUE }, + + { AV_PIX_FMT_DXVA2_VLD, LAVPixFmt_DXVA2, FALSE }, }; static AVCodecID ff_interlace_capable[] = { @@ -565,9 +565,9 @@ STDMETHODIMP CDecAvcodec::InitDecoder(AVCodecID codec, const CMediaType *pmt) CMPEG2HeaderParser mpeg2Parser(extra, extralen); if (mpeg2Parser.hdr.valid) { if (mpeg2Parser.hdr.chroma < 2) { - m_pAVCtx->pix_fmt = PIX_FMT_YUV420P; + m_pAVCtx->pix_fmt = AV_PIX_FMT_YUV420P; } else if (mpeg2Parser.hdr.chroma == 2) { - m_pAVCtx->pix_fmt = PIX_FMT_YUV422P; + m_pAVCtx->pix_fmt = AV_PIX_FMT_YUV422P; } m_iInterlaced = mpeg2Parser.hdr.interlaced; } @@ -587,9 +587,9 @@ STDMETHODIMP CDecAvcodec::InitDecoder(AVCodecID codec, const CMediaType *pmt) } if (codec == AV_CODEC_ID_DNXHD) - m_pAVCtx->pix_fmt = PIX_FMT_YUV422P10; + m_pAVCtx->pix_fmt = AV_PIX_FMT_YUV422P10; else if (codec == AV_CODEC_ID_FRAPS) - m_pAVCtx->pix_fmt = PIX_FMT_BGR24; + m_pAVCtx->pix_fmt = AV_PIX_FMT_BGR24; if (bLAVInfoValid && codec != AV_CODEC_ID_FRAPS && m_pAVCtx->pix_fmt != AV_PIX_FMT_DXVA2_VLD) m_pAVCtx->pix_fmt = lavPinInfo.pix_fmt; @@ -988,7 +988,7 @@ STDMETHODIMP CDecAvcodec::EndOfStream() STDMETHODIMP CDecAvcodec::GetPixelFormat(LAVPixelFormat *pPix, int *pBpp) { - PixelFormat pixfmt = m_pAVCtx ? m_pAVCtx->pix_fmt : PIX_FMT_NONE; + PixelFormat pixfmt = m_pAVCtx ? m_pAVCtx->pix_fmt : AV_PIX_FMT_NONE; PixelFormatMapping mapping = getPixFmtMapping(pixfmt); if (pPix) *pPix = mapping.lavpixfmt; |