📄 tools.h
字号:
/* * GPAC - Multimedia Framework C SDK * * Copyright (c) Jean Le Feuvre 2000-2005 * All rights reserved * * This file is part of GPAC / common tools sub-project * * GPAC 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, or (at your option) * any later version. * * GPAC 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 this library; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * */#ifndef _GF_TOOLS_H_#define _GF_TOOLS_H_#ifdef __cplusplusextern "C" {#endif#include <gpac/setup.h>/*! \file "gpac/tools.h" * \brief Base definitions and functions of GPAC. * * This file contains basic functions and core definitions of the GPAC framework. This file is * usually included by all GPAC header files since it contains the error definitions.*//*! \defgroup utils_grp utils * You will find in this module the documentation of all tools used in GPAC.*//*! \addtogroup tools_grp base utils * \ingroup utils_grp * \brief Base definitions and functions of GPAC. * * This section documents some very basic functions and core definitions of the GPAC framework. * @{ *//*! * \brief GPAC Version * \hideinitializer * * Macro giving GPAC version expressed as a printable string*//*KEEP SPACE SEPARATORS FOR MAKE / GREP (SEE MAIN MAKEFILE)!!!, and NO SPACE in GPAC_VERSION for proper install*/#define GPAC_VERSION "0.4.4"/*! * \brief GPAC Version * \hideinitializer * * Macro giving GPAC version expressed as an integer, where version X.Y.Z is coded as 0x00XXYYZZ*/#define GPAC_VERSION_INT 0x00000404/*! * \brief Memory allocation * \hideinitializer * * Macro allocating memory and zero-ing it*/#define GF_SAFEALLOC(__ptr, __struct) { __ptr = (__struct *) malloc(sizeof(__struct)); if (__ptr) memset((void *) __ptr, 0, sizeof(__struct)); }/*! * \brief 4CC Formatting * \hideinitializer * * Macro formating a 4-character code (or 4CC) "abcd" as 0xAABBCCDD*/#define GF_4CC(a,b,c,d) (((a)<<24)|((b)<<16)|((c)<<8)|(d))/*! * \brief 4CC Printing * * returns a 4CC printable form*/const char *gf_4cc_to_str(u32 type);/*! * \brief large file opening * * Opens a large file (>4GB) * \param file_name Same semantics as fopen * \param mode Same semantics as fopen * \return stream handle of the file object * \note You only need to call this function if you're suspecting the file to be a large one (usually only media files), otherwise use regular stdio.*/FILE *gf_f64_open(const char *file_name, const char *mode);/*! * \brief large file position query * * Queries the current read/write position in a large file * \param f Same semantics as ftell * \return position in the file * \note You only need to call this function if you're suspecting the file to be a large one (usually only media files), otherwise use regular stdio.*/u64 gf_f64_tell(FILE *f);/*! * \brief large file seeking * * Seeks the current read/write position in a large file * \param f Same semantics as fseek * \param pos Same semantics as fseek * \param whence Same semantics as fseek * \return new position in the file * \note You only need to call this function if you're suspecting the file to be a large one (usually only media files), otherwise use regular stdio.*/u64 gf_f64_seek(FILE *f, s64 pos, s32 whence);/*! @} *//*! \addtogroup errors_grp error codes * \ingroup utils_grp * \brief Errors used in GPAC. * * This section documents all error codes used in the GPAC framework. Most of the GPAC's functions will use these as * return values, and some of these errors are also used for state communication with the different modules of the framework. * @{ *//*! * GPAC Error * \hideinitializer * * positive values are warning and info, 0 means no error and negative values are errors */typedef enum{ /*!Message from any scripting engine used in the presentation (ECMAScript, MPEG-J, ...) (Info).*/ GF_SCRIPT_INFO = 3, /*!Indicates an data frame has several AU packed (not MPEG-4 compliant). This is used by decoders to force multiple decoding of the same data frame (Info).*/ GF_PACKED_FRAMES = 2, /*!Indicates the end of a stream or of a file (Info).*/ GF_EOS = 1, /*! \n\n */ /*!Operation success (no error).*/ GF_OK = 0, /*!\n*/ /*!One of the input parameter is not correct or cannot be used in the current operating mode of the framework.*/ GF_BAD_PARAM = -1, /*! Memory allocation failure.*/ GF_OUT_OF_MEM = -2, /*! Input/Output failure (disk access, system call failures)*/ GF_IO_ERR = -3, /*! The desired feature or operation is not supported by the framework*/ GF_NOT_SUPPORTED = -4, /*! Input data has been corrupted*/ GF_CORRUPTED_DATA = -5, /*! A modification was attempted on a scene node which could not be found*/ GF_SG_UNKNOWN_NODE = -6, /*! The PROTO node interface does not match the nodes using it*/ GF_SG_INVALID_PROTO = -7, /*! An error occured in the scripting engine*/ GF_SCRIPT_ERROR = -8, /*! Buffer is too small to contain decoded data. Decoders shall use this error whenever they need to resize their output memory buffers*/ GF_BUFFER_TOO_SMALL = -9, /*! Bitstream is not compliant to the specfication it refers to*/ GF_NON_COMPLIANT_BITSTREAM = -10, /*! No decoders could be found to handle the desired media type*/ GF_CODEC_NOT_FOUND = -11, /*! The URL is not properly formatted or cannot be found*/ GF_URL_ERROR = -12, /*! An service error has occured at the local side*/ GF_SERVICE_ERROR = -13, /*! A service error has occured at the remote (server) side*/ GF_REMOTE_SERVICE_ERROR = -14, /*! The desired stream could not be found in the service*/ GF_STREAM_NOT_FOUND = -15, /*! The IsoMedia file is not a valid one*/ GF_ISOM_INVALID_FILE = -20, /*! The IsoMedia file is not complete. Either the file is being downloaded, or it has been truncated*/ GF_ISOM_INCOMPLETE_FILE = -21, /*! The media in this IsoMedia track is not valid (usually due to a broken stream description)*/ GF_ISOM_INVALID_MEDIA = -22, /*! The requested operation cannot happen in the current opening mode of the IsoMedia file*/ GF_ISOM_INVALID_MODE = -23, /*! This IsoMedia track refers to media outside the file in an unknown way*/ GF_ISOM_UNKNOWN_DATA_REF = -24, /*! An invalid MPEG-4 Object Descriptor was found*/ GF_ODF_INVALID_DESCRIPTOR = -30, /*! An MPEG-4 Object Descriptor was found or added to a forbidden descriptor*/ GF_ODF_FORBIDDEN_DESCRIPTOR = -31, /*! An invalid MPEG-4 BIFS command was detected*/ GF_ODF_INVALID_COMMAND = -32, /*! The scene has been encoded using an unknown BIFS version*/ GF_BIFS_UNKNOWN_VERSION = -33, /*! The remote IP address could not be solved*/ GF_IP_ADDRESS_NOT_FOUND = -40, /*! The connection to the remote peer has failed*/ GF_IP_CONNECTION_FAILURE = -41, /*! The network operation has failed*/ GF_IP_NETWORK_FAILURE = -42, /*! The network connection has been closed*/ GF_IP_CONNECTION_CLOSED = -43, /*! The network operation has failed because no data is available*/ GF_IP_NETWORK_EMPTY = -44, /*! The network operation has been discarded because it would be a blocking one*/ GF_IP_SOCK_WOULD_BLOCK = -45, /*! UDP connection did not receive any data at all. Signaled by client services to reconfigure network if possible*/ GF_IP_UDP_TIMEOUT = -46, /*! Authentication with the remote host has failed*/ GF_AUTHENTICATION_FAILURE = -50,} GF_Err;/*! * \brief Error Printing * * Returns a printable version of a given error * \param e Error code requested * \return String representing the error*/const char *gf_error_to_string(GF_Err e);/*! @} *//*! \addtogroup log_grp logging tools * \ingroup utils_grp * @{ *//*! * GPAC Log Levels * \hideinitializer * * These levels describes messages priority used when filtering logs */enum{ /*! Log message describes an error*/ GF_LOG_ERROR = 1, /*! Log message describes a warning*/ GF_LOG_WARNING, /*! Log message is informational (state, etc..)*/ GF_LOG_INFO, /*! Log message is a debug info*/ GF_LOG_DEBUG,};/*! * \brief Log level assignment * * Sets the level used for log filtering. By default no log is performed * \param level log level used. * */void gf_log_set_level(u32 level);/*! * GPAC Log tools * \hideinitializer * * These flags describes which sub-part of GPAC generates the log and are used when filtering logs */enum{ /*! Log message from the core library (init, threads, network calls, etc)*/ GF_LOG_CORE = 1, /*! Log message from a raw media parser (BIFS, LASeR, A/V formats)*/ GF_LOG_CODING= 1<<1, /*! Log message from a bitstream parser (IsoMedia, MPEG-2 TS, OGG, ...)*/ GF_LOG_CONTAINER = 1<<2, /*! Log message from the network stack (messages & co)*/ GF_LOG_NETWORK = 1<<3, /*! Log message from the RTP/RTCP stack (TS info) and packet structure & hinting (debug)*/ GF_LOG_RTP = 1<<4, /*! Log message from authoring subsystem (file manip, import/export)*/ GF_LOG_AUTHOR = 1<<5, /*! Log message from the sync layer of the terminal*/ GF_LOG_SYNC = 1<<6, /*! Log message from a codec*/ GF_LOG_CODEC = 1<<7, /*! Log message from any XML parser (context loading, etc)*/ GF_LOG_PARSER = 1<<8, /*! Log message from the terminal/renderer, indicating media object state*/ GF_LOG_MEDIA = 1<<9, /*! Log message from the scene graph/scene manager (handling of nodes and attribute modif, DOM core)*/ GF_LOG_SCENE = 1<<10, /*! Log message from the scripting engine*/ GF_LOG_SCRIPT = 1<<11, /*! Log message from event handling, animations and scene timing*/ GF_LOG_COMPOSE = 1<<12, /*! Log message from renderer*/ GF_LOG_RENDER = 1<<13, /*! Log message from a media service*/ GF_LOG_SERVICE = 1<<14, /*! Log message from multimedia I/O devices (audio/video input/output, ...)*/ GF_LOG_MMIO = 1<<15};/*! * \brief Log modules assignment * * Sets the modules to be checked for log filtering. By default no modules are logged. * \param tools log tools filtered. This is an OR'ed combinaison of log module flags * */void gf_log_set_tools(u32 tools);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -