@ -21,6 +21,7 @@
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
*/
# include "libavutil/log.h"
# include "h264.h"
# include "vaapi_internal.h"
@ -41,7 +42,28 @@ static void destroy_buffers(VADisplay display, VABufferID *buffers, unsigned int
}
}
int ff_vaapi_render_picture ( struct vaapi_context * vactx , VASurfaceID surface )
int ff_vaapi_context_init ( AVCodecContext * avctx )
{
FFVAContext * const vactx = ff_vaapi_get_context ( avctx ) ;
const struct vaapi_context * const user_vactx = avctx - > hwaccel_context ;
if ( ! user_vactx ) {
av_log ( avctx , AV_LOG_ERROR , " Hardware acceleration context (hwaccel_context) does not exist. \n " ) ;
return AVERROR ( ENOSYS ) ;
}
vactx - > display = user_vactx - > display ;
vactx - > config_id = user_vactx - > config_id ;
vactx - > context_id = user_vactx - > context_id ;
return 0 ;
}
int ff_vaapi_context_fini ( AVCodecContext * avctx )
{
return 0 ;
}
int ff_vaapi_render_picture ( FFVAContext * vactx , VASurfaceID surface )
{
VABufferID va_buffers [ 3 ] ;
unsigned int n_va_buffers = 0 ;
@ -81,7 +103,7 @@ int ff_vaapi_render_picture(struct vaapi_context *vactx, VASurfaceID surface)
return 0 ;
}
int ff_vaapi_commit_slices ( struct vaapi_c ontext * vactx )
int ff_vaapi_commit_slices ( FFVAC ontext * vactx )
{
VABufferID * slice_buf_ids ;
VABufferID slice_param_buf_id , slice_data_buf_id ;
@ -121,7 +143,7 @@ int ff_vaapi_commit_slices(struct vaapi_context *vactx)
return 0 ;
}
static void * alloc_buffer ( struct vaapi_c ontext * vactx , int type , unsigned int size , uint32_t * buf_id )
static void * alloc_buffer ( FFVAC ontext * vactx , int type , unsigned int size , uint32_t * buf_id )
{
void * data = NULL ;
@ -133,22 +155,22 @@ static void *alloc_buffer(struct vaapi_context *vactx, int type, unsigned int si
return data ;
}
void * ff_vaapi_alloc_pic_param ( struct vaapi_c ontext * vactx , unsigned int size )
void * ff_vaapi_alloc_pic_param ( FFVAC ontext * vactx , unsigned int size )
{
return alloc_buffer ( vactx , VAPictureParameterBufferType , size , & vactx - > pic_param_buf_id ) ;
}
void * ff_vaapi_alloc_iq_matrix ( struct vaapi_c ontext * vactx , unsigned int size )
void * ff_vaapi_alloc_iq_matrix ( FFVAC ontext * vactx , unsigned int size )
{
return alloc_buffer ( vactx , VAIQMatrixBufferType , size , & vactx - > iq_matrix_buf_id ) ;
}
uint8_t * ff_vaapi_alloc_bitplane ( struct vaapi_c ontext * vactx , uint32_t size )
uint8_t * ff_vaapi_alloc_bitplane ( FFVAC ontext * vactx , uint32_t size )
{
return alloc_buffer ( vactx , VABitPlaneBufferType , size , & vactx - > bitplane_buf_id ) ;
}
VASliceParameterBufferBase * ff_vaapi_alloc_slice ( struct vaapi_c ontext * vactx , const uint8_t * buffer , uint32_t size )
VASliceParameterBufferBase * ff_vaapi_alloc_slice ( FFVAC ontext * vactx , const uint8_t * buffer , uint32_t size )
{
uint8_t * slice_params ;
VASliceParameterBufferBase * slice_param ;
@ -181,7 +203,7 @@ VASliceParameterBufferBase *ff_vaapi_alloc_slice(struct vaapi_context *vactx, co
void ff_vaapi_common_end_frame ( AVCodecContext * avctx )
{
struct vaapi_c ontext * const vactx = avctx - > hwaccel_context ;
FFVAC ontext * const vactx = ff_vaapi_get_context ( avctx ) ;
ff_dlog ( avctx , " ff_vaapi_common_end_frame() \n " ) ;
@ -202,7 +224,7 @@ void ff_vaapi_common_end_frame(AVCodecContext *avctx)
CONFIG_VC1_VAAPI_HWACCEL | | CONFIG_WMV3_VAAPI_HWACCEL
int ff_vaapi_mpeg_end_frame ( AVCodecContext * avctx )
{
struct vaapi_c ontext * const vactx = avctx - > hwaccel_context ;
FFVAC ontext * const vactx = ff_vaapi_get_context ( avctx ) ;
MpegEncContext * s = avctx - > priv_data ;
int ret ;