1 /***************************************************************************** 2 * vlc_image.h : wrapper for image reading/writing facilities 3 ***************************************************************************** 4 * Copyright (C) 2004 VLC authors and VideoLAN 5 * $Id: 2b308fd0e52f4d4d6e20f95d08e0d63c53822eef $ 6 * 7 * Authors: Gildas Bazin <gbazin@videolan.org> 8 * 9 * This program is free software; you can redistribute it and/or modify it 10 * under the terms of the GNU Lesser General Public License as published by 11 * the Free Software Foundation; either version 2.1 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU Lesser General Public License for more details. 18 * 19 * You should have received a copy of the GNU Lesser General Public License 20 * along with this program; if not, write to the Free Software Foundation, 21 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. 22 *****************************************************************************/ 23 24 #ifndef VLC_IMAGE_H 25 #define VLC_IMAGE_H 1 26 27 # include <vlc_picture.h> 28 # include <vlc_picture_fifo.h> 29 30 /** 31 * \file 32 * This file defines functions and structures for image conversions in vlc 33 */ 34 35 # ifdef __cplusplus 36 extern "C" { 37 # endif 38 39 struct image_handler_t 40 { 41 picture_t * (*pf_read) ( image_handler_t *, block_t *, 42 const video_format_t *, video_format_t * ); 43 picture_t * (*pf_read_url) ( image_handler_t *, const char *, 44 video_format_t *, video_format_t * ); 45 block_t * (*pf_write) ( image_handler_t *, picture_t *, 46 const video_format_t *, const video_format_t * ); 47 int (*pf_write_url) ( image_handler_t *, picture_t *, 48 const video_format_t *, video_format_t *, 49 const char * ); 50 51 picture_t * (*pf_convert) ( image_handler_t *, picture_t *, 52 const video_format_t *, video_format_t * ); 53 54 /* Private properties */ 55 vlc_object_t *p_parent; 56 decoder_t *p_dec; 57 encoder_t *p_enc; 58 filter_t *p_filter; 59 60 picture_fifo_t *outfifo; 61 }; 62 63 VLC_API image_handler_t * image_HandlerCreate( vlc_object_t * ) VLC_USED; 64 #define image_HandlerCreate( a ) image_HandlerCreate( VLC_OBJECT(a) ) 65 VLC_API void image_HandlerDelete( image_handler_t * ); 66 67 #define image_Read( a, b, c, d ) a->pf_read( a, b, c, d ) 68 #define image_ReadUrl( a, b, c, d ) a->pf_read_url( a, b, c, d ) 69 #define image_Write( a, b, c, d ) a->pf_write( a, b, c, d ) 70 #define image_WriteUrl( a, b, c, d, e ) a->pf_write_url( a, b, c, d, e ) 71 #define image_Convert( a, b, c, d ) a->pf_convert( a, b, c, d ) 72 73 VLC_API vlc_fourcc_t image_Type2Fourcc( const char *psz_name ); 74 VLC_API vlc_fourcc_t image_Ext2Fourcc( const char *psz_name ); 75 VLC_API vlc_fourcc_t image_Mime2Fourcc( const char *psz_mime ); 76 77 # ifdef __cplusplus 78 } 79 # endif 80 81 #endif /* _VLC_IMAGE_H */ 82