diff mbox series

[FFmpeg-devel,v4,03/10] qsv: remove mfx/ prefix from mfx headers

Message ID 20210923062818.18892-4-haihao.xiang@intel.com
State New
Headers show
Series make QSV works with the Intel's oneVPL | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Xiang, Haihao Sept. 23, 2021, 6:28 a.m. UTC
The following Cflags has been added to libmfx.pc, so mfx/ prefix is no
longer needed when including mfx headers in FFmpeg.
   Cflags: -I${includedir} -I${includedir}/mfx

Some old versions of libmfx have the following Cflags in libmfx.pc
   Cflags: -I${includedir}

We may add -I${includedir}/mfx to CFLAGS when running 'configure
--enable-libmfx' for old versions of libmfx, if so, mfx headers without
mfx/ prefix can be included too.

If libmfx comes without pkg-config support, we may do a small change to
the settings of the environment(e.g. set -I/opt/intel/mediasdk/include/mfx
instead of -I/opt/intel/mediasdk/include to CFLAGS), then the build can
find the mfx headers without mfx/ prefix

After applying this change, we won't need to change #include for mfx
headers when mfx headers are installed under a new directory.

This is in preparation for oneVPL support (mfx headers in oneVPL are
installed under vpl directory)
---
 configure                        | 13 +++++++++----
 libavcodec/qsv.c                 |  8 ++++----
 libavcodec/qsv.h                 |  2 +-
 libavcodec/qsv_internal.h        |  2 +-
 libavcodec/qsvdec.c              |  2 +-
 libavcodec/qsvenc.c              |  2 +-
 libavcodec/qsvenc.h              |  2 +-
 libavcodec/qsvenc_h264.c         |  2 +-
 libavcodec/qsvenc_hevc.c         |  2 +-
 libavcodec/qsvenc_jpeg.c         |  2 +-
 libavcodec/qsvenc_mpeg2.c        |  2 +-
 libavcodec/qsvenc_vp9.c          |  2 +-
 libavfilter/qsvvpp.h             |  2 +-
 libavfilter/vf_deinterlace_qsv.c |  2 +-
 libavfilter/vf_scale_qsv.c       |  2 +-
 libavutil/hwcontext_opencl.c     |  2 +-
 libavutil/hwcontext_qsv.c        |  2 +-
 libavutil/hwcontext_qsv.h        |  2 +-
 18 files changed, 29 insertions(+), 24 deletions(-)

Comments

James Almer Sept. 28, 2021, 7:48 p.m. UTC | #1
On 9/23/2021 3:28 AM, Haihao Xiang wrote:
> The following Cflags has been added to libmfx.pc, so mfx/ prefix is no
> longer needed when including mfx headers in FFmpeg.
>     Cflags: -I${includedir} -I${includedir}/mfx
> 
> Some old versions of libmfx have the following Cflags in libmfx.pc
>     Cflags: -I${includedir}
> 
> We may add -I${includedir}/mfx to CFLAGS when running 'configure
> --enable-libmfx' for old versions of libmfx, if so, mfx headers without
> mfx/ prefix can be included too.
> 
> If libmfx comes without pkg-config support, we may do a small change to
> the settings of the environment(e.g. set -I/opt/intel/mediasdk/include/mfx
> instead of -I/opt/intel/mediasdk/include to CFLAGS), then the build can
> find the mfx headers without mfx/ prefix
> 
> After applying this change, we won't need to change #include for mfx
> headers when mfx headers are installed under a new directory.
> 
> This is in preparation for oneVPL support (mfx headers in oneVPL are
> installed under vpl directory)
> ---
>   configure                        | 13 +++++++++----
>   libavcodec/qsv.c                 |  8 ++++----
>   libavcodec/qsv.h                 |  2 +-
>   libavcodec/qsv_internal.h        |  2 +-
>   libavcodec/qsvdec.c              |  2 +-
>   libavcodec/qsvenc.c              |  2 +-
>   libavcodec/qsvenc.h              |  2 +-
>   libavcodec/qsvenc_h264.c         |  2 +-
>   libavcodec/qsvenc_hevc.c         |  2 +-
>   libavcodec/qsvenc_jpeg.c         |  2 +-
>   libavcodec/qsvenc_mpeg2.c        |  2 +-
>   libavcodec/qsvenc_vp9.c          |  2 +-
>   libavfilter/qsvvpp.h             |  2 +-
>   libavfilter/vf_deinterlace_qsv.c |  2 +-
>   libavfilter/vf_scale_qsv.c       |  2 +-
>   libavutil/hwcontext_opencl.c     |  2 +-
>   libavutil/hwcontext_qsv.c        |  2 +-
>   libavutil/hwcontext_qsv.h        |  2 +-
>   18 files changed, 29 insertions(+), 24 deletions(-)
> 
> diff --git a/configure b/configure
> index 21c744e627..9655a5823e 100755
> --- a/configure
> +++ b/configure
> @@ -6434,13 +6434,18 @@ enabled liblensfun        && require_pkg_config liblensfun lensfun lensfun.h lf_
>   # Media SDK or Intel Media Server Studio, these don't come with
>   # pkg-config support.  Instead, users should make sure that the build
>   # can find the libraries and headers through other means.
> -enabled libmfx            && { { check_pkg_config libmfx "libmfx < 2.0" "mfx/mfxvideo.h" MFXInit ||
> -                                 { require "libmfx < 2.0" "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } } &&
> +
> +enabled libmfx            && { { check_pkg_config libmfx "libmfx < 2.0" "mfxvideo.h" MFXInit ||
> +# Some old versions of libmfx have the following settings in libmfx.pc:
> +#   includedir=/usr/include
> +#   Cflags: -I${includedir}
> +# So add -I${includedir}/mfx to CFLAGS
> +                                 { check_pkg_config libmfx "libmfx < 2.0" "mfx/mfxvideo.h" MFXInit && add_cflags -I$($pkg_config --variable=includedir libmfx)/mfx; } ||

add_cflags ${libmfx_cflags}/mfx

> +                                 { require "libmfx < 2.0" "mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } } &&
>                                  warn "build FFmpeg against libmfx 1.x, obsolete features of libmfx such as OPAQUE memory,\n"\
>                                       "multi-frame encode, user plugins and LA_EXT rate control mode are enabled"; }
Xiang, Haihao Sept. 29, 2021, 7:21 a.m. UTC | #2
On Tue, 2021-09-28 at 16:48 -0300, James Almer wrote:
> On 9/23/2021 3:28 AM, Haihao Xiang wrote:
> > The following Cflags has been added to libmfx.pc, so mfx/ prefix is no
> > longer needed when including mfx headers in FFmpeg.
> >     Cflags: -I${includedir} -I${includedir}/mfx
> > 
> > Some old versions of libmfx have the following Cflags in libmfx.pc
> >     Cflags: -I${includedir}
> > 
> > We may add -I${includedir}/mfx to CFLAGS when running 'configure
> > --enable-libmfx' for old versions of libmfx, if so, mfx headers without
> > mfx/ prefix can be included too.
> > 
> > If libmfx comes without pkg-config support, we may do a small change to
> > the settings of the environment(e.g. set -I/opt/intel/mediasdk/include/mfx
> > instead of -I/opt/intel/mediasdk/include to CFLAGS), then the build can
> > find the mfx headers without mfx/ prefix
> > 
> > After applying this change, we won't need to change #include for mfx
> > headers when mfx headers are installed under a new directory.
> > 
> > This is in preparation for oneVPL support (mfx headers in oneVPL are
> > installed under vpl directory)
> > ---
> >   configure                        | 13 +++++++++----
> >   libavcodec/qsv.c                 |  8 ++++----
> >   libavcodec/qsv.h                 |  2 +-
> >   libavcodec/qsv_internal.h        |  2 +-
> >   libavcodec/qsvdec.c              |  2 +-
> >   libavcodec/qsvenc.c              |  2 +-
> >   libavcodec/qsvenc.h              |  2 +-
> >   libavcodec/qsvenc_h264.c         |  2 +-
> >   libavcodec/qsvenc_hevc.c         |  2 +-
> >   libavcodec/qsvenc_jpeg.c         |  2 +-
> >   libavcodec/qsvenc_mpeg2.c        |  2 +-
> >   libavcodec/qsvenc_vp9.c          |  2 +-
> >   libavfilter/qsvvpp.h             |  2 +-
> >   libavfilter/vf_deinterlace_qsv.c |  2 +-
> >   libavfilter/vf_scale_qsv.c       |  2 +-
> >   libavutil/hwcontext_opencl.c     |  2 +-
> >   libavutil/hwcontext_qsv.c        |  2 +-
> >   libavutil/hwcontext_qsv.h        |  2 +-
> >   18 files changed, 29 insertions(+), 24 deletions(-)
> > 
> > diff --git a/configure b/configure
> > index 21c744e627..9655a5823e 100755
> > --- a/configure
> > +++ b/configure
> > @@ -6434,13 +6434,18 @@ enabled liblensfun        && require_pkg_config
> > liblensfun lensfun lensfun.h lf_
> >   # Media SDK or Intel Media Server Studio, these don't come with
> >   # pkg-config support.  Instead, users should make sure that the build
> >   # can find the libraries and headers through other means.
> > -enabled libmfx            && { { check_pkg_config libmfx "libmfx < 2.0"
> > "mfx/mfxvideo.h" MFXInit ||
> > -                                 { require "libmfx < 2.0" "mfx/mfxvideo.h"
> > MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-
> > config"; } } &&
> > +
> > +enabled libmfx            && { { check_pkg_config libmfx "libmfx < 2.0"
> > "mfxvideo.h" MFXInit ||
> > +# Some old versions of libmfx have the following settings in libmfx.pc:
> > +#   includedir=/usr/include
> > +#   Cflags: -I${includedir}
> > +# So add -I${includedir}/mfx to CFLAGS
> > +                                 { check_pkg_config libmfx "libmfx < 2.0"
> > "mfx/mfxvideo.h" MFXInit && add_cflags -I$($pkg_config --variable=includedir 
> > libmfx)/mfx; } ||
> 
> add_cflags ${libmfx_cflags}/mfx

Because /usr/include is a system path, `pkg-config --cflags libmfx` returns
nothing and libmfx_cflags is set to nothing. Hence the result `add_cflags
${libmfx_cflags}/mfx` is /mfx, which is wrong for libmfx.

> 
> > +                                 { require "libmfx < 2.0" "mfxvideo.h"
> > MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-
> > config"; } } &&
> >                                  warn "build FFmpeg against libmfx 1.x,
> > obsolete features of libmfx such as OPAQUE memory,\n"\
> >                                       "multi-frame encode, user plugins and
> > LA_EXT rate control mode are enabled"; }
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

diff --git a/configure b/configure
index 21c744e627..9655a5823e 100755
--- a/configure
+++ b/configure
@@ -6434,13 +6434,18 @@  enabled liblensfun        && require_pkg_config liblensfun lensfun lensfun.h lf_
 # Media SDK or Intel Media Server Studio, these don't come with
 # pkg-config support.  Instead, users should make sure that the build
 # can find the libraries and headers through other means.
-enabled libmfx            && { { check_pkg_config libmfx "libmfx < 2.0" "mfx/mfxvideo.h" MFXInit ||
-                                 { require "libmfx < 2.0" "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } } &&
+
+enabled libmfx            && { { check_pkg_config libmfx "libmfx < 2.0" "mfxvideo.h" MFXInit ||
+# Some old versions of libmfx have the following settings in libmfx.pc:
+#   includedir=/usr/include
+#   Cflags: -I${includedir}
+# So add -I${includedir}/mfx to CFLAGS
+                                 { check_pkg_config libmfx "libmfx < 2.0" "mfx/mfxvideo.h" MFXInit && add_cflags -I$($pkg_config --variable=includedir libmfx)/mfx; } ||
+                                 { require "libmfx < 2.0" "mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } } &&
                                warn "build FFmpeg against libmfx 1.x, obsolete features of libmfx such as OPAQUE memory,\n"\
                                     "multi-frame encode, user plugins and LA_EXT rate control mode are enabled"; }
-
 if enabled libmfx; then
-   check_cc MFX_CODEC_VP9 "mfx/mfxdefs.h mfx/mfxstructures.h" "MFX_CODEC_VP9"
+   check_cc MFX_CODEC_VP9 "mfxdefs.h mfxstructures.h" "MFX_CODEC_VP9"
 fi
 
 enabled libmodplug        && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load
diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
index 9d08485c92..84f0401b0f 100644
--- a/libavcodec/qsv.c
+++ b/libavcodec/qsv.c
@@ -18,9 +18,9 @@ 
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <mfx/mfxvideo.h>
-#include <mfx/mfxplugin.h>
-#include <mfx/mfxjpeg.h>
+#include <mfxvideo.h>
+#include <mfxplugin.h>
+#include <mfxjpeg.h>
 
 #include <stdio.h>
 #include <string.h>
@@ -39,7 +39,7 @@ 
 #define MFX_IMPL_VIA_MASK(impl) (0x0f00 & (impl))
 
 #if QSV_VERSION_ATLEAST(1, 12)
-#include "mfx/mfxvp8.h"
+#include "mfxvp8.h"
 #endif
 
 int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id)
diff --git a/libavcodec/qsv.h b/libavcodec/qsv.h
index b77158ec26..04ae0d6f34 100644
--- a/libavcodec/qsv.h
+++ b/libavcodec/qsv.h
@@ -21,7 +21,7 @@ 
 #ifndef AVCODEC_QSV_H
 #define AVCODEC_QSV_H
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/buffer.h"
 
diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h
index 8090b748b3..24c3e9307e 100644
--- a/libavcodec/qsv_internal.h
+++ b/libavcodec/qsv_internal.h
@@ -39,7 +39,7 @@ 
 #include "libavutil/hwcontext_vaapi.h"
 #endif
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/frame.h"
 
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index 8bce9f2cf0..1cadb846f5 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -25,7 +25,7 @@ 
 #include <string.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/fifo.h"
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index f7bb3f5eff..5e76299372 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -23,7 +23,7 @@ 
 
 #include <string.h>
 #include <sys/types.h>
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/hwcontext.h"
diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h
index 31516b8e55..7a71ffe98f 100644
--- a/libavcodec/qsvenc.h
+++ b/libavcodec/qsvenc.h
@@ -26,7 +26,7 @@ 
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/avutil.h"
 #include "libavutil/fifo.h"
diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
index 80fe3cc280..9134e6a68c 100644
--- a/libavcodec/qsvenc_h264.c
+++ b/libavcodec/qsvenc_h264.c
@@ -24,7 +24,7 @@ 
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/opt.h"
diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
index b7b2f5633e..a268a002d6 100644
--- a/libavcodec/qsvenc_hevc.c
+++ b/libavcodec/qsvenc_hevc.c
@@ -22,7 +22,7 @@ 
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/opt.h"
diff --git a/libavcodec/qsvenc_jpeg.c b/libavcodec/qsvenc_jpeg.c
index dd082692be..ad8f09befe 100644
--- a/libavcodec/qsvenc_jpeg.c
+++ b/libavcodec/qsvenc_jpeg.c
@@ -22,7 +22,7 @@ 
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/opt.h"
diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
index 525df99e50..610bbf79c1 100644
--- a/libavcodec/qsvenc_mpeg2.c
+++ b/libavcodec/qsvenc_mpeg2.c
@@ -22,7 +22,7 @@ 
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/opt.h"
diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
index 9329990d11..0a382eb76d 100644
--- a/libavcodec/qsvenc_vp9.c
+++ b/libavcodec/qsvenc_vp9.c
@@ -22,7 +22,7 @@ 
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "libavutil/common.h"
 #include "libavutil/opt.h"
diff --git a/libavfilter/qsvvpp.h b/libavfilter/qsvvpp.h
index e0f4c8f5bb..8c0cf3ed95 100644
--- a/libavfilter/qsvvpp.h
+++ b/libavfilter/qsvvpp.h
@@ -24,7 +24,7 @@ 
 #ifndef AVFILTER_QSVVPP_H
 #define AVFILTER_QSVVPP_H
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "avfilter.h"
 #include "libavutil/fifo.h"
diff --git a/libavfilter/vf_deinterlace_qsv.c b/libavfilter/vf_deinterlace_qsv.c
index 173c314bb8..ab849558ef 100644
--- a/libavfilter/vf_deinterlace_qsv.c
+++ b/libavfilter/vf_deinterlace_qsv.c
@@ -21,7 +21,7 @@ 
  * deinterlace video filter - QSV
  */
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include <stdio.h>
 #include <string.h>
diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
index 5a37cef63d..19c9bb6463 100644
--- a/libavfilter/vf_scale_qsv.c
+++ b/libavfilter/vf_scale_qsv.c
@@ -21,7 +21,7 @@ 
  * scale video filter - QSV
  */
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include <stdio.h>
 #include <string.h>
diff --git a/libavutil/hwcontext_opencl.c b/libavutil/hwcontext_opencl.c
index 26a3a24593..194165fba2 100644
--- a/libavutil/hwcontext_opencl.c
+++ b/libavutil/hwcontext_opencl.c
@@ -47,7 +47,7 @@ 
 
 #if HAVE_OPENCL_VAAPI_INTEL_MEDIA
 #if CONFIG_LIBMFX
-#include <mfx/mfxstructures.h>
+#include <mfxstructures.h>
 #endif
 #include <va/va.h>
 #include <CL/cl_va_api_media_sharing_intel.h>
diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c
index 225ae768a9..7ded65e6b5 100644
--- a/libavutil/hwcontext_qsv.c
+++ b/libavutil/hwcontext_qsv.c
@@ -19,7 +19,7 @@ 
 #include <stdint.h>
 #include <string.h>
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 #include "config.h"
 
diff --git a/libavutil/hwcontext_qsv.h b/libavutil/hwcontext_qsv.h
index b98d611cfc..42e34d0dda 100644
--- a/libavutil/hwcontext_qsv.h
+++ b/libavutil/hwcontext_qsv.h
@@ -19,7 +19,7 @@ 
 #ifndef AVUTIL_HWCONTEXT_QSV_H
 #define AVUTIL_HWCONTEXT_QSV_H
 
-#include <mfx/mfxvideo.h>
+#include <mfxvideo.h>
 
 /**
  * @file