You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	* commit 'cca5e4f040971db6de0bfe6968f00c021d8a9c42': qsv: adding Multi Frame Encode support Merged-by: James Almer <jamrial@gmail.com>
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @file
 | |
|  * Intel Quick Sync Video VPP base function
 | |
|  */
 | |
| 
 | |
| #ifndef AVFILTER_QSVVPP_H
 | |
| #define AVFILTER_QSVVPP_H
 | |
| 
 | |
| #include <mfx/mfxvideo.h>
 | |
| 
 | |
| #include "avfilter.h"
 | |
| 
 | |
| #define FF_INLINK_IDX(link)  ((int)((link)->dstpad - (link)->dst->input_pads))
 | |
| #define FF_OUTLINK_IDX(link) ((int)((link)->srcpad - (link)->src->output_pads))
 | |
| 
 | |
| #define QSV_VERSION_ATLEAST(MAJOR, MINOR)   \
 | |
|     (MFX_VERSION_MAJOR > (MAJOR) ||         \
 | |
|      MFX_VERSION_MAJOR == (MAJOR) && MFX_VERSION_MINOR >= (MINOR))
 | |
| 
 | |
| #define QSV_RUNTIME_VERSION_ATLEAST(MFX_VERSION, MAJOR, MINOR) \
 | |
|     (MFX_VERSION.Major > (MAJOR)) ||                           \
 | |
|     (MFX_VERSION.Major == (MAJOR) && MFX_VERSION.Minor >= (MINOR))
 | |
| 
 | |
| typedef struct QSVVPPContext QSVVPPContext;
 | |
| 
 | |
| typedef struct QSVVPPCrop {
 | |
|     int in_idx;        ///< Input index
 | |
|     int x, y, w, h;    ///< Crop rectangle
 | |
| } QSVVPPCrop;
 | |
| 
 | |
| typedef struct QSVVPPParam {
 | |
|     /* default is ff_filter_frame */
 | |
|     int (*filter_frame)(AVFilterLink *outlink, AVFrame *frame);
 | |
| 
 | |
|     /* To fill with MFX enhanced filter configurations */
 | |
|     int num_ext_buf;
 | |
|     mfxExtBuffer **ext_buf;
 | |
| 
 | |
|     /* Real output format */
 | |
|     enum AVPixelFormat out_sw_format;
 | |
| 
 | |
|     /* Crop information for each input, if needed */
 | |
|     int num_crop;
 | |
|     QSVVPPCrop *crop;
 | |
| } QSVVPPParam;
 | |
| 
 | |
| /* create and initialize the QSV session */
 | |
| int ff_qsvvpp_create(AVFilterContext *avctx, QSVVPPContext **vpp, QSVVPPParam *param);
 | |
| 
 | |
| /* release the resources (eg.surfaces) */
 | |
| int ff_qsvvpp_free(QSVVPPContext **vpp);
 | |
| 
 | |
| /* vpp filter frame and call the cb if needed */
 | |
| int ff_qsvvpp_filter_frame(QSVVPPContext *vpp, AVFilterLink *inlink, AVFrame *frame);
 | |
| 
 | |
| #endif /* AVFILTER_QSVVPP_H */
 |