Commit eba04147 authored by James Almer's avatar James Almer

Merge commit '59e7361c'

* commit '59e7361c':
  hwcontext: add a QSV implementation

Conflicts:
    doc/APIchanges
    libavutil/version.h
Merged-by: 's avatarJames Almer <jamrial@gmail.com>
parents e9a5fc96 59e7361c
...@@ -15,6 +15,10 @@ libavutil: 2015-08-28 ...@@ -15,6 +15,10 @@ libavutil: 2015-08-28
API changes, most recent first: API changes, most recent first:
2016-09-xx - xxxxxxx - lavu 55.32.100 / 55.16.0 - hwcontext.h hwcontext_qsv.h
Add AV_HWDEVICE_TYPE_QSV and a new installed header with QSV-specific
hwcontext definitions.
2016-09-xx - xxxxxxx - lavc 57.59.100/ 57.23.0 - avcodec.h 2016-09-xx - xxxxxxx - lavc 57.59.100/ 57.23.0 - avcodec.h
AVCodecContext.hw_frames_ctx now may be used by decoders. AVCodecContext.hw_frames_ctx now may be used by decoders.
......
...@@ -35,6 +35,7 @@ HEADERS = adler32.h \ ...@@ -35,6 +35,7 @@ HEADERS = adler32.h \
hwcontext.h \ hwcontext.h \
hwcontext_cuda.h \ hwcontext_cuda.h \
hwcontext_dxva2.h \ hwcontext_dxva2.h \
hwcontext_qsv.h \
hwcontext_vaapi.h \ hwcontext_vaapi.h \
hwcontext_vdpau.h \ hwcontext_vdpau.h \
imgutils.h \ imgutils.h \
...@@ -154,6 +155,7 @@ OBJS-$(!HAVE_ATOMICS_NATIVE) += atomic.o \ ...@@ -154,6 +155,7 @@ OBJS-$(!HAVE_ATOMICS_NATIVE) += atomic.o \
OBJS-$(CONFIG_CUDA) += hwcontext_cuda.o OBJS-$(CONFIG_CUDA) += hwcontext_cuda.o
OBJS-$(CONFIG_DXVA2) += hwcontext_dxva2.o OBJS-$(CONFIG_DXVA2) += hwcontext_dxva2.o
OBJS-$(CONFIG_LIBMFX) += hwcontext_qsv.o
OBJS-$(CONFIG_LZO) += lzo.o OBJS-$(CONFIG_LZO) += lzo.o
OBJS-$(CONFIG_OPENCL) += opencl.o opencl_internal.o OBJS-$(CONFIG_OPENCL) += opencl.o opencl_internal.o
OBJS-$(CONFIG_VAAPI) += hwcontext_vaapi.o OBJS-$(CONFIG_VAAPI) += hwcontext_vaapi.o
...@@ -166,6 +168,7 @@ SLIBOBJS-$(HAVE_GNU_WINDRES) += avutilres.o ...@@ -166,6 +168,7 @@ SLIBOBJS-$(HAVE_GNU_WINDRES) += avutilres.o
SKIPHEADERS-$(CONFIG_CUDA) += hwcontext_cuda.h SKIPHEADERS-$(CONFIG_CUDA) += hwcontext_cuda.h
SKIPHEADERS-$(CONFIG_DXVA2) += hwcontext_dxva2.h SKIPHEADERS-$(CONFIG_DXVA2) += hwcontext_dxva2.h
SKIPHEADERS-$(CONFIG_LIBMFX) += hwcontext_qsv.h
SKIPHEADERS-$(CONFIG_VAAPI) += hwcontext_vaapi.h SKIPHEADERS-$(CONFIG_VAAPI) += hwcontext_vaapi.h
SKIPHEADERS-$(CONFIG_VDPAU) += hwcontext_vdpau.h SKIPHEADERS-$(CONFIG_VDPAU) += hwcontext_vdpau.h
SKIPHEADERS-$(HAVE_ATOMICS_GCC) += atomic_gcc.h SKIPHEADERS-$(HAVE_ATOMICS_GCC) += atomic_gcc.h
......
...@@ -35,6 +35,9 @@ static const HWContextType *hw_table[] = { ...@@ -35,6 +35,9 @@ static const HWContextType *hw_table[] = {
#if CONFIG_DXVA2 #if CONFIG_DXVA2
&ff_hwcontext_type_dxva2, &ff_hwcontext_type_dxva2,
#endif #endif
#if CONFIG_LIBMFX
&ff_hwcontext_type_qsv,
#endif
#if CONFIG_VAAPI #if CONFIG_VAAPI
&ff_hwcontext_type_vaapi, &ff_hwcontext_type_vaapi,
#endif #endif
......
...@@ -29,6 +29,7 @@ enum AVHWDeviceType { ...@@ -29,6 +29,7 @@ enum AVHWDeviceType {
AV_HWDEVICE_TYPE_CUDA, AV_HWDEVICE_TYPE_CUDA,
AV_HWDEVICE_TYPE_VAAPI, AV_HWDEVICE_TYPE_VAAPI,
AV_HWDEVICE_TYPE_DXVA2, AV_HWDEVICE_TYPE_DXVA2,
AV_HWDEVICE_TYPE_QSV,
}; };
typedef struct AVHWDeviceInternal AVHWDeviceInternal; typedef struct AVHWDeviceInternal AVHWDeviceInternal;
......
...@@ -101,6 +101,7 @@ struct AVHWFramesInternal { ...@@ -101,6 +101,7 @@ struct AVHWFramesInternal {
extern const HWContextType ff_hwcontext_type_cuda; extern const HWContextType ff_hwcontext_type_cuda;
extern const HWContextType ff_hwcontext_type_dxva2; extern const HWContextType ff_hwcontext_type_dxva2;
extern const HWContextType ff_hwcontext_type_qsv;
extern const HWContextType ff_hwcontext_type_vaapi; extern const HWContextType ff_hwcontext_type_vaapi;
extern const HWContextType ff_hwcontext_type_vdpau; extern const HWContextType ff_hwcontext_type_vdpau;
......
This diff is collapsed.
/*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVUTIL_HWCONTEXT_QSV_H
#define AVUTIL_HWCONTEXT_QSV_H
#include <mfx/mfxvideo.h>
/**
* @file
* An API-specific header for AV_HWDEVICE_TYPE_QSV.
*
* This API does not support dynamic frame pools. AVHWFramesContext.pool must
* contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct.
*/
/**
* This struct is allocated as AVHWDeviceContext.hwctx
*/
typedef struct AVQSVDeviceContext {
mfxSession session;
} AVQSVDeviceContext;
/**
* This struct is allocated as AVHWFramesContext.hwctx
*/
typedef struct AVQSVFramesContext {
mfxFrameSurface1 *surfaces;
int nb_surfaces;
/**
* A combination of MFX_MEMTYPE_* describing the frame pool.
*/
int frame_type;
} AVQSVFramesContext;
#endif /* AVUTIL_HWCONTEXT_QSV_H */
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 55 #define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 31 #define LIBAVUTIL_VERSION_MINOR 32
#define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment