Re: [libav-devel] [PATCH 2/2] Intel Media SDK, Quick Sync Video/QSV: Initial add of H.264 decoder infrastructure
On Wed, Feb 27, 2013 at 04:49:08PM +0100, Maxym Dmytrychenko wrote: --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -199,6 +200,7 @@ OBJS-$(CONFIG_H264_DECODER)+= h264.o \ cabac.o h264_sei.o h264_ps.o \ h264_refs.o h264_cavlc.o h264_cabac.o OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o +OBJS-$(CONFIG_H264_QSV_DECODER)+= qsv.o qsv_h264.o OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o Can or will qsv be extended to other codecs apart from h264? Then the common code should be compiled dependent on just CONFIG_QSV (see vdpau and vaapi above in the Makefile). --- a/libavcodec/qsv_h264.c +++ b/libavcodec/qsv_h264.c @@ -267,8 +267,8 @@ int ff_qsv_decode_init(AVCodecContext *avctx) Using default config for QSV decode\n); avctx-hwaccel_context = av_qsv_default_config; } else { -if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY - (*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_SYSTEM_MEMORY) { +if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY +(*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_SYSTEM_MEMORY) { av_log_missing_feature(avctx, MFX_IOPATTERN_OUT_SYSTEM_MEMORY type, 0); return AVERROR_PATCHWELCOME; } @@ -408,8 +408,7 @@ static int qsv_decode_frame(AVCodecContext *avctx, void *data, sts = MFX_ERR_NONE; // ignore warnings, where warnings 0 , and not error codes 0 -while (MFX_ERR_NONE = sts || MFX_ERR_MORE_SURFACE == sts - || MFX_WRN_DEVICE_BUSY == sts) { +while (MFX_ERR_NONE = sts || MFX_ERR_MORE_SURFACE == sts || MFX_WRN_DEVICE_BUSY == sts) { if (MFX_ERR_MORE_SURFACE == sts || MFX_ERR_NONE == sts) { surface_idx = av_qsv_get_free_surface(qsv_decode, qsv, qsv_decode-request[0].Info, QSV_PART_ANY); if (surface_idx == -1) { @@ -766,7 +765,7 @@ mfxStatus ff_qsv_mem_buffer_alloc(mfxHDL pthis, mfxU32 nbytes, mfxU16 type, if (!mid) return MFX_ERR_NULL_PTR; -if (0 == (type MFX_MEMTYPE_SYSTEM_MEMORY)) +if (!(type MFX_MEMTYPE_SYSTEM_MEMORY)) return MFX_ERR_UNSUPPORTED; This is all nice and good, but it should have been squashed. --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -27,7 +27,7 @@ #define LIBAVCODEC_VERSION_MAJOR 54 -#define LIBAVCODEC_VERSION_MINOR 41 +#define LIBAVCODEC_VERSION_MINOR 42 #define LIBAVCODEC_VERSION_MICRO 1 Rebase on top of master. Diego ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH 2/2] Intel Media SDK, Quick Sync Video/QSV: Initial add of H.264 decoder infrastructure
--- Changelog |1 + configure |7 +++ libavcodec/Makefile|2 ++ libavcodec/allcodecs.c |1 + libavcodec/qsv.h |2 +- libavcodec/qsv_h264.c |9 - libavcodec/version.h |2 +- libavutil/pixfmt.h |1 + 8 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Changelog b/Changelog index f56c112..765b87f 100644 --- a/Changelog +++ b/Changelog @@ -4,6 +4,7 @@ releases are sorted from youngest to oldest. version 10: - av_strnstr - support ID3v2 tags in ASF files +- QSV decoder hardware acceleration version 9: diff --git a/configure b/configure index 1aae93b..dcd0c37 100755 --- a/configure +++ b/configure @@ -130,6 +130,7 @@ Component options: Hardware accelerators: --enable-dxva2 enable DXVA2 code + --enable-qsv enable QSV code --enable-vaapi enable VAAPI code --enable-vda enable VDA code --enable-vdpau enable VDPAU code @@ -1048,6 +1049,7 @@ EXTERNAL_LIBRARY_LIST= HWACCEL_LIST= dxva2 +qsv vaapi vda vdpau @@ -1624,6 +1626,8 @@ zmbv_encoder_select=zlib # hardware accelerators dxva2_deps=dxva2api_h +qsv_deps=mfx_mfxvideo_h +qsv_extralibs=-lmfx -lstdc++ vaapi_deps=va_va_h vda_deps=VideoDecodeAcceleration_VDADecoder_h pthreads vda_extralibs=-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore @@ -1635,6 +1639,8 @@ h263_vdpau_hwaccel_deps=vdpau h263_vdpau_hwaccel_select=h263_decoder h264_dxva2_hwaccel_deps=dxva2 h264_dxva2_hwaccel_select=h264_decoder +h264_qsv_decoder_deps=qsv +h264_qsv_decoder_select=h264_decoder h264_vaapi_hwaccel_deps=vaapi h264_vaapi_hwaccel_select=h264_decoder h264_vda_hwaccel_deps=vda @@ -3468,6 +3474,7 @@ check_header sys/resource.h check_header sys/select.h check_header sys/time.h check_header unistd.h +check_header mfx/mfxvideo.h check_header vdpau/vdpau.h check_header vdpau/vdpau_x11.h check_header VideoDecodeAcceleration/VDADecoder.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 262d2eb..d0b6166 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -5,6 +5,7 @@ HEADERS = avcodec.h \ avfft.h \ dxva2.h \ old_codec_ids.h \ + qsv.h \ vaapi.h \ vda.h \ vdpau.h \ @@ -199,6 +200,7 @@ OBJS-$(CONFIG_H264_DECODER)+= h264.o \ cabac.o h264_sei.o h264_ps.o \ h264_refs.o h264_cavlc.o h264_cabac.o OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o +OBJS-$(CONFIG_H264_QSV_DECODER)+= qsv.o qsv_h264.o OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o OBJS-$(CONFIG_H264_VDA_HWACCEL)+= vda_h264.o OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 8bfa603..a4f8643 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -150,6 +150,7 @@ void avcodec_register_all(void) REGISTER_DECODER(H263I, h263i); REGISTER_ENCODER(H263P, h263p); REGISTER_DECODER(H264, h264); +REGISTER_DECODER(H264_QSV, h264_qsv); REGISTER_DECODER(H264_VDPAU,h264_vdpau); REGISTER_ENCDEC (HUFFYUV, huffyuv); REGISTER_DECODER(IDCIN, idcin); diff --git a/libavcodec/qsv.h b/libavcodec/qsv.h index cfbf75c..fc16fea 100644 --- a/libavcodec/qsv.h +++ b/libavcodec/qsv.h @@ -335,7 +335,7 @@ typedef struct av_qsv_config { /** * Distance between I- or P- key frames; if it is zero, the GOP structure is unspecified. - * Note: If GopRefDist = 1, there are no B-frames used. + * Note: If GopRefDist = 1 no B-frames are used. * * - encoding: Set by user. * - decoding: unused diff --git a/libavcodec/qsv_h264.c b/libavcodec/qsv_h264.c index fbd3aa7..51122c2 100644 --- a/libavcodec/qsv_h264.c +++ b/libavcodec/qsv_h264.c @@ -267,8 +267,8 @@ int ff_qsv_decode_init(AVCodecContext *avctx) Using default config for QSV decode\n); avctx-hwaccel_context = av_qsv_default_config; } else { -if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY - (*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_SYSTEM_MEMORY) { +if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY +(*qsv_config_context)-io_pattern !=
[libav-devel] [PATCH 2/2] Intel Media SDK, Quick Sync Video/QSV: Initial add of H.264 decoder infrastructure
From: Maxym Dmytrychenko maxim@gmail.com --- Changelog |1 + configure |7 +++ libavcodec/Makefile|2 ++ libavcodec/allcodecs.c |1 + libavcodec/qsv.h |2 +- libavcodec/qsv_h264.c |9 - libavcodec/version.h |2 +- libavutil/pixfmt.h |1 + 8 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Changelog b/Changelog index f56c112..765b87f 100644 --- a/Changelog +++ b/Changelog @@ -4,6 +4,7 @@ releases are sorted from youngest to oldest. version 10: - av_strnstr - support ID3v2 tags in ASF files +- QSV decoder hardware acceleration version 9: diff --git a/configure b/configure index 1aae93b..dcd0c37 100755 --- a/configure +++ b/configure @@ -130,6 +130,7 @@ Component options: Hardware accelerators: --enable-dxva2 enable DXVA2 code + --enable-qsv enable QSV code --enable-vaapi enable VAAPI code --enable-vda enable VDA code --enable-vdpau enable VDPAU code @@ -1048,6 +1049,7 @@ EXTERNAL_LIBRARY_LIST= HWACCEL_LIST= dxva2 +qsv vaapi vda vdpau @@ -1624,6 +1626,8 @@ zmbv_encoder_select=zlib # hardware accelerators dxva2_deps=dxva2api_h +qsv_deps=mfx_mfxvideo_h +qsv_extralibs=-lmfx -lstdc++ vaapi_deps=va_va_h vda_deps=VideoDecodeAcceleration_VDADecoder_h pthreads vda_extralibs=-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore @@ -1635,6 +1639,8 @@ h263_vdpau_hwaccel_deps=vdpau h263_vdpau_hwaccel_select=h263_decoder h264_dxva2_hwaccel_deps=dxva2 h264_dxva2_hwaccel_select=h264_decoder +h264_qsv_decoder_deps=qsv +h264_qsv_decoder_select=h264_decoder h264_vaapi_hwaccel_deps=vaapi h264_vaapi_hwaccel_select=h264_decoder h264_vda_hwaccel_deps=vda @@ -3468,6 +3474,7 @@ check_header sys/resource.h check_header sys/select.h check_header sys/time.h check_header unistd.h +check_header mfx/mfxvideo.h check_header vdpau/vdpau.h check_header vdpau/vdpau_x11.h check_header VideoDecodeAcceleration/VDADecoder.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 262d2eb..d0b6166 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -5,6 +5,7 @@ HEADERS = avcodec.h \ avfft.h \ dxva2.h \ old_codec_ids.h \ + qsv.h \ vaapi.h \ vda.h \ vdpau.h \ @@ -199,6 +200,7 @@ OBJS-$(CONFIG_H264_DECODER)+= h264.o \ cabac.o h264_sei.o h264_ps.o \ h264_refs.o h264_cavlc.o h264_cabac.o OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o +OBJS-$(CONFIG_H264_QSV_DECODER)+= qsv.o qsv_h264.o OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o OBJS-$(CONFIG_H264_VDA_HWACCEL)+= vda_h264.o OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 8bfa603..a4f8643 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -150,6 +150,7 @@ void avcodec_register_all(void) REGISTER_DECODER(H263I, h263i); REGISTER_ENCODER(H263P, h263p); REGISTER_DECODER(H264, h264); +REGISTER_DECODER(H264_QSV, h264_qsv); REGISTER_DECODER(H264_VDPAU,h264_vdpau); REGISTER_ENCDEC (HUFFYUV, huffyuv); REGISTER_DECODER(IDCIN, idcin); diff --git a/libavcodec/qsv.h b/libavcodec/qsv.h index cfbf75c..fc16fea 100644 --- a/libavcodec/qsv.h +++ b/libavcodec/qsv.h @@ -335,7 +335,7 @@ typedef struct av_qsv_config { /** * Distance between I- or P- key frames; if it is zero, the GOP structure is unspecified. - * Note: If GopRefDist = 1, there are no B-frames used. + * Note: If GopRefDist = 1 no B-frames are used. * * - encoding: Set by user. * - decoding: unused diff --git a/libavcodec/qsv_h264.c b/libavcodec/qsv_h264.c index fbd3aa7..51122c2 100644 --- a/libavcodec/qsv_h264.c +++ b/libavcodec/qsv_h264.c @@ -267,8 +267,8 @@ int ff_qsv_decode_init(AVCodecContext *avctx) Using default config for QSV decode\n); avctx-hwaccel_context = av_qsv_default_config; } else { -if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY - (*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_SYSTEM_MEMORY) { +if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY +
[libav-devel] [PATCH 2/2] Intel Media SDK, Quick Sync Video/QSV: Initial add of H.264 decoder infrastructure
From: Maxym Dmytrychenko maxym.dmytryche...@intel.com --- Changelog |1 + configure |7 +++ libavcodec/Makefile|2 ++ libavcodec/allcodecs.c |1 + libavcodec/qsv.h |2 +- libavcodec/qsv_h264.c |9 - libavcodec/version.h |2 +- libavutil/pixfmt.h |1 + 8 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Changelog b/Changelog index f56c112..765b87f 100644 --- a/Changelog +++ b/Changelog @@ -4,6 +4,7 @@ releases are sorted from youngest to oldest. version 10: - av_strnstr - support ID3v2 tags in ASF files +- QSV decoder hardware acceleration version 9: diff --git a/configure b/configure index 1aae93b..dcd0c37 100755 --- a/configure +++ b/configure @@ -130,6 +130,7 @@ Component options: Hardware accelerators: --enable-dxva2 enable DXVA2 code + --enable-qsv enable QSV code --enable-vaapi enable VAAPI code --enable-vda enable VDA code --enable-vdpau enable VDPAU code @@ -1048,6 +1049,7 @@ EXTERNAL_LIBRARY_LIST= HWACCEL_LIST= dxva2 +qsv vaapi vda vdpau @@ -1624,6 +1626,8 @@ zmbv_encoder_select=zlib # hardware accelerators dxva2_deps=dxva2api_h +qsv_deps=mfx_mfxvideo_h +qsv_extralibs=-lmfx -lstdc++ vaapi_deps=va_va_h vda_deps=VideoDecodeAcceleration_VDADecoder_h pthreads vda_extralibs=-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore @@ -1635,6 +1639,8 @@ h263_vdpau_hwaccel_deps=vdpau h263_vdpau_hwaccel_select=h263_decoder h264_dxva2_hwaccel_deps=dxva2 h264_dxva2_hwaccel_select=h264_decoder +h264_qsv_decoder_deps=qsv +h264_qsv_decoder_select=h264_decoder h264_vaapi_hwaccel_deps=vaapi h264_vaapi_hwaccel_select=h264_decoder h264_vda_hwaccel_deps=vda @@ -3468,6 +3474,7 @@ check_header sys/resource.h check_header sys/select.h check_header sys/time.h check_header unistd.h +check_header mfx/mfxvideo.h check_header vdpau/vdpau.h check_header vdpau/vdpau_x11.h check_header VideoDecodeAcceleration/VDADecoder.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 262d2eb..d0b6166 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -5,6 +5,7 @@ HEADERS = avcodec.h \ avfft.h \ dxva2.h \ old_codec_ids.h \ + qsv.h \ vaapi.h \ vda.h \ vdpau.h \ @@ -199,6 +200,7 @@ OBJS-$(CONFIG_H264_DECODER)+= h264.o \ cabac.o h264_sei.o h264_ps.o \ h264_refs.o h264_cavlc.o h264_cabac.o OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o +OBJS-$(CONFIG_H264_QSV_DECODER)+= qsv.o qsv_h264.o OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o OBJS-$(CONFIG_H264_VDA_HWACCEL)+= vda_h264.o OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 8bfa603..a4f8643 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -150,6 +150,7 @@ void avcodec_register_all(void) REGISTER_DECODER(H263I, h263i); REGISTER_ENCODER(H263P, h263p); REGISTER_DECODER(H264, h264); +REGISTER_DECODER(H264_QSV, h264_qsv); REGISTER_DECODER(H264_VDPAU,h264_vdpau); REGISTER_ENCDEC (HUFFYUV, huffyuv); REGISTER_DECODER(IDCIN, idcin); diff --git a/libavcodec/qsv.h b/libavcodec/qsv.h index cfbf75c..fc16fea 100644 --- a/libavcodec/qsv.h +++ b/libavcodec/qsv.h @@ -335,7 +335,7 @@ typedef struct av_qsv_config { /** * Distance between I- or P- key frames; if it is zero, the GOP structure is unspecified. - * Note: If GopRefDist = 1, there are no B-frames used. + * Note: If GopRefDist = 1 no B-frames are used. * * - encoding: Set by user. * - decoding: unused diff --git a/libavcodec/qsv_h264.c b/libavcodec/qsv_h264.c index fbd3aa7..51122c2 100644 --- a/libavcodec/qsv_h264.c +++ b/libavcodec/qsv_h264.c @@ -267,8 +267,8 @@ int ff_qsv_decode_init(AVCodecContext *avctx) Using default config for QSV decode\n); avctx-hwaccel_context = av_qsv_default_config; } else { -if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY - (*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_SYSTEM_MEMORY) { +if ((*qsv_config_context)-io_pattern != MFX_IOPATTERN_OUT_OPAQUE_MEMORY +