Re: [libav-devel] [PATCH 2/2] Intel Media SDK, Quick Sync Video/QSV: Initial add of H.264 decoder infrastructure

2013-03-12 Thread Diego Biurrun
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

2013-02-27 Thread Maxym Dmytrychenko
---
 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

2013-02-27 Thread Maxym Dmytrychenko
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

2013-02-27 Thread maxim . d33
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 
+