va.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * va.h: Video Acceleration API for avcodec
00003  *****************************************************************************
00004  * Copyright (C) 2009 Laurent Aimar
00005  * $Id: 6cb5bf48148d30795ebdd87e922141b71c3c6025 $
00006  *
00007  * Authors: Laurent Aimar <fenrir_AT_ videolan _DOT_ org>
00008  *
00009  * This program is free software; you can redistribute it and/or modify
00010  * it under the terms of the GNU General Public License as published by
00011  * the Free Software Foundation; either version 2 of the License, or
00012  * (at your option) any later version.
00013  *
00014  * This program is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU General Public License
00020  * along with this program; if not, write to the Free Software
00021  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
00022  *****************************************************************************/
00023 
00024 #ifndef _VLC_VA_H
00025 #define _VLC_VA_H 1
00026 
00027 typedef struct vlc_va_t vlc_va_t;
00028 struct vlc_va_t {
00029     char *description;
00030 
00031     int  (*setup)(vlc_va_t *, void **hw, vlc_fourcc_t *output,
00032                   int width, int height);
00033     int  (*get)(vlc_va_t *, AVFrame *frame);
00034     void (*release)(vlc_va_t *, AVFrame *frame);
00035     int  (*extract)(vlc_va_t *, picture_t *dst, AVFrame *src);
00036     void (*close)(vlc_va_t *);
00037 };
00038 
00039 static inline int vlc_va_Setup(vlc_va_t *va, void **hw, vlc_fourcc_t *output,
00040                                 int width, int height)
00041 {
00042     return va->setup(va, hw, output, width, height);
00043 }
00044 static inline int vlc_va_Get(vlc_va_t *va, AVFrame *frame)
00045 {
00046     return va->get(va, frame);
00047 }
00048 static inline void vlc_va_Release(vlc_va_t *va, AVFrame *frame)
00049 {
00050     va->release(va, frame);
00051 }
00052 static inline int vlc_va_Extract(vlc_va_t *va, picture_t *dst, AVFrame *src)
00053 {
00054     return va->extract(va, dst, src);
00055 }
00056 static inline void vlc_va_Delete(vlc_va_t *va)
00057 {
00058     va->close(va);
00059 }
00060 
00061 vlc_va_t *vlc_va_NewVaapi(int codec_id);
00062 vlc_va_t *vlc_va_NewDxva2(vlc_object_t *log, int codec_id);
00063 
00064 #endif
00065 

Generated on Tue May 25 08:04:53 2010 for VLC by  doxygen 1.5.6