Update of /cvsroot/audacity/lib-src/ffmpeg In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv14194/lib-src/ffmpeg
Added Files: avcodec.h avformat.h avio.h avutil.h common.h intfloat_readwrite.h log.h mathematics.h mem.h rational.h Log Message: larsl pointed out that on Debian (at least) FFmpeg headers aren't in libav* directories. Moving the files. --- NEW FILE: mem.h --- /* * copyright (c) 2006 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 mem.h * Memory handling functions. */ #ifndef FFMPEG_MEM_H #define FFMPEG_MEM_H #ifdef __ICC #define DECLARE_ALIGNED(n,t,v) t v __attribute__ ((aligned (n))) #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v #elif defined(__GNUC__) #define DECLARE_ALIGNED(n,t,v) t v __attribute__ ((aligned (n))) #define DECLARE_ASM_CONST(n,t,v) static const t v attribute_used __attribute__ ((aligned (n))) #elif defined(_MSC_VER) #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v #elif defined(HAVE_INLINE_ASM) #error The asm code needs alignment, but we do not know how to do it for this compiler. #else #define DECLARE_ALIGNED(n,t,v) t v #define DECLARE_ASM_CONST(n,t,v) static const t v #endif #if defined(__GNUC__) && (__GNU__ > 3 || __GNU__ == 3 && __GNU_MINOR__ > 0) #define av_malloc_attrib __attribute__((__malloc__)) #else #define av_malloc_attrib #endif #if defined(__GNUC__) && (__GNU__ > 4 || __GNU__ == 4 && __GNU_MINOR__ > 1) #define av_alloc_size(n) __attribute__((alloc_size(n))) #else #define av_alloc_size(n) #endif /** * Allocate a block of \p size bytes with alignment suitable for all * memory accesses (including vectors if available on the CPU). * @param size Size in bytes for the memory block to be allocated. * @return Pointer to the allocated block, NULL if it cannot allocate * it. * @see av_mallocz() */ void *av_malloc(unsigned int size) av_malloc_attrib av_alloc_size(1); /** * Allocate or reallocate a block of memory. * If \p ptr is NULL and \p size > 0, allocate a new block. If \p * size is zero, free the memory block pointed by \p ptr. * @param size Size in bytes for the memory block to be allocated or * reallocated. * @param ptr Pointer to a memory block already allocated with * av_malloc(z)() or av_realloc() or NULL. * @return Pointer to a newly reallocated block or NULL if it cannot * reallocate or the function is used to free the memory block. * @see av_fast_realloc() */ void *av_realloc(void *ptr, unsigned int size) av_alloc_size(2); /** * Free a memory block which has been allocated with av_malloc(z)() or * av_realloc(). * @param ptr Pointer to the memory block which should be freed. * @note ptr = NULL is explicitly allowed. * @note It is recommended that you use av_freep() instead. * @see av_freep() */ void av_free(void *ptr); /** * Allocate a block of \p size bytes with alignment suitable for all * memory accesses (including vectors if available on the CPU) and * set to zeroes all the bytes of the block. * @param size Size in bytes for the memory block to be allocated. * @return Pointer to the allocated block, NULL if it cannot allocate * it. * @see av_malloc() */ void *av_mallocz(unsigned int size) av_malloc_attrib av_alloc_size(1); /** * Duplicate the string \p s. * @param s String to be duplicated. * @return Pointer to a newly allocated string containing a * copy of \p s or NULL if it cannot be allocated. */ char *av_strdup(const char *s) av_malloc_attrib; /** * Free a memory block which has been allocated with av_malloc(z)() or * av_realloc() and set to NULL the pointer to it. * @param ptr Pointer to the pointer to the memory block which should * be freed. * @see av_free() */ void av_freep(void *ptr); #endif /* FFMPEG_MEM_H */ --- NEW FILE: common.h --- /* * copyright (c) 2006 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 common.h * common internal and external API header */ #ifndef FFMPEG_COMMON_H #define FFMPEG_COMMON_H #include <inttypes.h> #ifdef HAVE_AV_CONFIG_H /* only include the following when compiling package */ # include "config.h" # include <stdlib.h> # include <stdio.h> # include <string.h> # include <ctype.h> # include <limits.h> # include <errno.h> # include <math.h> #endif /* HAVE_AV_CONFIG_H */ #ifndef av_always_inline #if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0) # define av_always_inline __attribute__((always_inline)) inline #else # define av_always_inline inline #endif #endif #ifndef av_noinline #if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0) # define av_noinline __attribute__((noinline)) #else # define av_noinline #endif #endif #ifndef av_pure #if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0) # define av_pure __attribute__((pure)) #else # define av_pure #endif #endif #ifndef av_const #if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 5) # define av_const __attribute__((const)) #else # define av_const #endif #endif #ifndef av_cold #if defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 2) # define av_cold __attribute__((cold)) #else # define av_cold #endif #endif #ifdef HAVE_AV_CONFIG_H # include "internal.h" #endif /* HAVE_AV_CONFIG_H */ #ifndef attribute_deprecated #if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0) # define attribute_deprecated __attribute__((deprecated)) #else # define attribute_deprecated #endif #endif #ifndef av_unused #if defined(__GNUC__) # define av_unused __attribute__((unused)) #else # define av_unused #endif #endif #include "mem.h" //rounded divison & shift #define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) /* assume b>0 */ #define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) #define FFABS(a) ((a) >= 0 ? (a) : (-(a))) #define FFSIGN(a) ((a) > 0 ? 1 : -1) #define FFMAX(a,b) ((a) > (b) ? (a) : (b)) #define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) #define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) #define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) /* misc math functions */ extern const uint8_t ff_log2_tab[256]; static inline av_const int av_log2(unsigned int v) { int n = 0; if (v & 0xffff0000) { v >>= 16; n += 16; } if (v & 0xff00) { v >>= 8; n += 8; } n += ff_log2_tab[v]; return n; } static inline av_const int av_log2_16bit(unsigned int v) { int n = 0; if (v & 0xff00) { v >>= 8; n += 8; } n += ff_log2_tab[v]; return n; } /* median of 3 */ static inline av_const int mid_pred(int a, int b, int c) { #ifdef HAVE_CMOV int i=b; asm volatile( "cmp %2, %1 \n\t" "cmovg %1, %0 \n\t" "cmovg %2, %1 \n\t" "cmp %3, %1 \n\t" "cmovl %3, %1 \n\t" "cmp %1, %0 \n\t" "cmovg %1, %0 \n\t" :"+&r"(i), "+&r"(a) :"r"(b), "r"(c) ); return i; #elif 0 int t= (a-b)&((a-b)>>31); a-=t; b+=t; b-= (b-c)&((b-c)>>31); b+= (a-b)&((a-b)>>31); return b; #else if(a>b){ if(c>b){ if(c>a) b=a; else b=c; } }else{ if(b>c){ if(c>a) b=c; else b=a; } } return b; #endif } /** * clip a signed integer value into the amin-amax range * @param a value to clip * @param amin minimum value of the clip range * @param amax maximum value of the clip range * @return clipped value */ static inline av_const int av_clip(int a, int amin, int amax) { if (a < amin) return amin; else if (a > amax) return amax; else return a; } /** * clip a signed integer value into the 0-255 range * @param a value to clip * @return clipped value */ static inline av_const uint8_t av_clip_uint8(int a) { if (a&(~255)) return (-a)>>31; else return a; } /** * clip a signed integer value into the -32768,32767 range * @param a value to clip * @return clipped value */ static inline av_const int16_t av_clip_int16(int a) { if ((a+32768) & ~65535) return (a>>31) ^ 32767; else return a; } /* math */ int64_t av_const ff_gcd(int64_t a, int64_t b); /** * converts fourcc string to int */ static inline av_pure int ff_get_fourcc(const char *s){ #ifdef HAVE_AV_CONFIG_H assert( strlen(s)==4 ); #endif return (s[0]) + (s[1]<<8) + (s[2]<<16) + (s[3]<<24); } #define MKTAG(a,b,c,d) (a | (b << 8) | (c << 16) | (d << 24)) #define MKBETAG(a,b,c,d) (d | (c << 8) | (b << 16) | (a << 24)) /*! * \def GET_UTF8(val, GET_BYTE, ERROR) * converts a UTF-8 character (up to 4 bytes long) to its 32-bit UCS-4 encoded form * \param val is the output and should be of type uint32_t. It holds the converted * UCS-4 character and should be a left value. * \param GET_BYTE gets UTF-8 encoded bytes from any proper source. It can be * a function or a statement whose return value or evaluated value is of type * uint8_t. It will be executed up to 4 times for values in the valid UTF-8 range, * and up to 7 times in the general case. * \param ERROR action that should be taken when an invalid UTF-8 byte is returned * from GET_BYTE. It should be a statement that jumps out of the macro, * like exit(), goto, return, break, or continue. */ #define GET_UTF8(val, GET_BYTE, ERROR)\ val= GET_BYTE;\ {\ int ones= 7 - av_log2(val ^ 255);\ if(ones==1)\ ERROR\ val&= 127>>ones;\ while(--ones > 0){\ int tmp= GET_BYTE - 128;\ if(tmp>>6)\ ERROR\ val= (val<<6) + tmp;\ }\ } /*! * \def PUT_UTF8(val, tmp, PUT_BYTE) * converts a 32-bit unicode character to its UTF-8 encoded form (up to 4 bytes long). * \param val is an input only argument and should be of type uint32_t. It holds * a ucs4 encoded unicode character that is to be converted to UTF-8. If * val is given as a function it's executed only once. * \param tmp is a temporary variable and should be of type uint8_t. It * represents an intermediate value during conversion that is to be * outputted by PUT_BYTE. * \param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. * It could be a function or a statement, and uses tmp as the input byte. * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be * executed up to 4 times for values in the valid UTF-8 range and up to * 7 times in the general case, depending on the length of the converted * unicode character. */ #define PUT_UTF8(val, tmp, PUT_BYTE)\ {\ int bytes, shift;\ uint32_t in = val;\ if (in < 0x80) {\ tmp = in;\ PUT_BYTE\ } else {\ bytes = (av_log2(in) + 4) / 5;\ shift = (bytes - 1) * 6;\ tmp = (256 - (256 >> bytes)) | (in >> shift);\ PUT_BYTE\ while (shift >= 6) {\ shift -= 6;\ tmp = 0x80 | ((in >> shift) & 0x3f);\ PUT_BYTE\ }\ }\ } #if defined(ARCH_X86) || defined(ARCH_POWERPC) || defined(ARCH_BFIN) #define AV_READ_TIME read_time #if defined(ARCH_X86_64) static inline uint64_t read_time(void) { uint64_t a, d; asm volatile("rdtsc\n\t" : "=a" (a), "=d" (d)); return (d << 32) | (a & 0xffffffff); } #elif defined(ARCH_X86_32) static inline long long read_time(void) { long long l; asm volatile("rdtsc\n\t" : "=A" (l)); return l; } #elif ARCH_BFIN static inline uint64_t read_time(void) { union { struct { unsigned lo; unsigned hi; } p; unsigned long long c; } t; asm volatile ("%0=cycles; %1=cycles2;" : "=d" (t.p.lo), "=d" (t.p.hi)); return t.c; } #else //FIXME check ppc64 static inline uint64_t read_time(void) { uint32_t tbu, tbl, temp; /* from section 2.2.1 of the 32-bit PowerPC PEM */ asm volatile( "1:\n" "mftbu %2\n" "mftb %0\n" "mftbu %1\n" "cmpw %2,%1\n" "bne 1b\n" : "=r"(tbl), "=r"(tbu), "=r"(temp) : : "cc"); return (((uint64_t)tbu)<<32) | (uint64_t)tbl; } #endif #elif defined(HAVE_GETHRTIME) #define AV_READ_TIME gethrtime #endif #ifdef AV_READ_TIME #define START_TIMER \ uint64_t tend;\ uint64_t tstart= AV_READ_TIME();\ #define STOP_TIMER(id) \ tend= AV_READ_TIME();\ {\ static uint64_t tsum=0;\ static int tcount=0;\ static int tskip_count=0;\ if(tcount<2 || tend - tstart < FFMAX(8*tsum/tcount, 2000)){\ tsum+= tend - tstart;\ tcount++;\ }else\ tskip_count++;\ if(((tcount+tskip_count)&(tcount+tskip_count-1))==0){\ av_log(NULL, AV_LOG_DEBUG, "%"PRIu64" dezicycles in %s, %d runs, %d skips\n",\ tsum*10/tcount, id, tcount, tskip_count);\ }\ } #else #define START_TIMER #define STOP_TIMER(id) {} #endif #endif /* FFMPEG_COMMON_H */ --- NEW FILE: mathematics.h --- /* * copyright (c) 2005 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 */ #ifndef FFMPEG_MATHEMATICS_H #define FFMPEG_MATHEMATICS_H #include <stdint.h> #include "rational.h" enum AVRounding { AV_ROUND_ZERO = 0, ///< round toward zero AV_ROUND_INF = 1, ///< round away from zero AV_ROUND_DOWN = 2, ///< round toward -infinity AV_ROUND_UP = 3, ///< round toward +infinity AV_ROUND_NEAR_INF = 5, ///< round to nearest and halfway cases away from zero }; /** * rescale a 64bit integer with rounding to nearest. * a simple a*b/c isn't possible as it can overflow */ int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; /** * rescale a 64bit integer with specified rounding. * a simple a*b/c isn't possible as it can overflow */ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const; /** * rescale a 64bit integer by 2 rational numbers. */ int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; #endif /* FFMPEG_MATHEMATICS_H */ --- NEW FILE: avformat.h --- /* * copyright (c) 2001 Fabrice Bellard * * 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 */ [...1023 lines suppressed...] time_t mktimegm(struct tm *tm); struct tm *brktimegm(time_t secs, struct tm *tm); const char *small_strptime(const char *p, const char *fmt, struct tm *dt); struct in_addr; int resolve_host(struct in_addr *sin_addr, const char *hostname); void url_split(char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, char *path, int path_size, const char *url); int match_ext(const char *filename, const char *extensions); #endif /* HAVE_AV_CONFIG_H */ #endif /* FFMPEG_AVFORMAT_H */ --- NEW FILE: avio.h --- /* * unbuffered io for ffmpeg system * copyright (c) 2001 Fabrice Bellard * * 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 */ #ifndef FFMPEG_AVIO_H #define FFMPEG_AVIO_H #include <stdint.h> /* output byte stream handling */ typedef int64_t offset_t; /* unbuffered I/O */ /** * URL Context. * New fields can be added to the end with minor version bumps. * Removal, reordering and changes to existing fields require a major * version bump. * sizeof(URLContext) must not be used outside libav*. */ struct URLContext { #if LIBAVFORMAT_VERSION_MAJOR >= 53 const AVClass *av_class; ///< information for av_log(). Set by url_open(). #endif struct URLProtocol *prot; int flags; int is_streamed; /**< true if streamed (no seek possible), default = false */ int max_packet_size; /**< if non zero, the stream is packetized with this max packet size */ void *priv_data; char *filename; /**< specified filename */ }; typedef struct URLContext URLContext; typedef struct URLPollEntry { URLContext *handle; int events; int revents; } URLPollEntry; #define URL_RDONLY 0 #define URL_WRONLY 1 #define URL_RDWR 2 typedef int URLInterruptCB(void); int url_open(URLContext **h, const char *filename, int flags); int url_read(URLContext *h, unsigned char *buf, int size); int url_write(URLContext *h, unsigned char *buf, int size); offset_t url_seek(URLContext *h, offset_t pos, int whence); int url_close(URLContext *h); int url_exist(const char *filename); offset_t url_filesize(URLContext *h); /** * Return the maximum packet size associated to packetized file * handle. If the file is not packetized (stream like HTTP or file on * disk), then 0 is returned. * * @param h file handle * @return maximum packet size in bytes */ int url_get_max_packet_size(URLContext *h); void url_get_filename(URLContext *h, char *buf, int buf_size); /** * The callback is called in blocking functions to test regulary if * asynchronous interruption is needed. AVERROR(EINTR) is returned * in this case by the interrupted function. 'NULL' means no interrupt * callback is given. */ void url_set_interrupt_cb(URLInterruptCB *interrupt_cb); /* not implemented */ int url_poll(URLPollEntry *poll_table, int n, int timeout); /** * Pause and resume playing - only meaningful if using a network streaming * protocol (e.g. MMS). * @param pause 1 for pause, 0 for resume */ int av_url_read_pause(URLContext *h, int pause); /** * Seek to a given timestamp relative to some component stream. * Only meaningful if using a network streaming protocol (e.g. MMS.). * @param stream_index The stream index that the timestamp is relative to. * If stream_index is (-1) the timestamp should be in AV_TIME_BASE * units from the beginning of the presentation. * If a stream_index >= 0 is used and the protocol does not support * seeking based on component streams, the call will fail with ENOTSUP. * @param timestamp timestamp in AVStream.time_base units * or if there is no stream specified then in AV_TIME_BASE units. * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE * and AVSEEK_FLAG_ANY. The protocol may silently ignore * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will * fail with ENOTSUP if used and not supported. * @return >= 0 on success * @see AVInputFormat::read_seek */ offset_t av_url_read_seek(URLContext *h, int stream_index, int64_t timestamp, int flags); /** * Passing this as the "whence" parameter to a seek function causes it to * return the filesize without seeking anywhere. Supporting this is optional. * If it is not supported then the seek function will return <0. */ #define AVSEEK_SIZE 0x10000 typedef struct URLProtocol { const char *name; int (*url_open)(URLContext *h, const char *filename, int flags); int (*url_read)(URLContext *h, unsigned char *buf, int size); int (*url_write)(URLContext *h, unsigned char *buf, int size); offset_t (*url_seek)(URLContext *h, offset_t pos, int whence); int (*url_close)(URLContext *h); struct URLProtocol *next; int (*url_read_pause)(URLContext *h, int pause); offset_t (*url_read_seek)(URLContext *h, int stream_index, int64_t timestamp, int flags); } URLProtocol; extern URLProtocol *first_protocol; extern URLInterruptCB *url_interrupt_cb; URLProtocol *av_protocol_next(URLProtocol *p); int register_protocol(URLProtocol *protocol); /** * Bytestream IO Context. * New fields can be added to the end with minor version bumps. * Removal, reordering and changes to existing fields require a major * version bump. * sizeof(ByteIOContext) must not be used outside libav*. */ typedef struct { unsigned char *buffer; int buffer_size; unsigned char *buf_ptr, *buf_end; void *opaque; int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); offset_t (*seek)(void *opaque, offset_t offset, int whence); offset_t pos; /**< position in the file of the current buffer */ int must_flush; /**< true if the next seek should flush */ int eof_reached; /**< true if eof reached */ int write_flag; /**< true if open for writing */ int is_streamed; int max_packet_size; unsigned long checksum; unsigned char *checksum_ptr; unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); int error; ///< contains the error code or 0 if no error happened int (*read_pause)(void *opaque, int pause); offset_t (*read_seek)(void *opaque, int stream_index, int64_t timestamp, int flags); } ByteIOContext; int init_put_byte(ByteIOContext *s, unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), offset_t (*seek)(void *opaque, offset_t offset, int whence)); ByteIOContext *av_alloc_put_byte( unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), offset_t (*seek)(void *opaque, offset_t offset, int whence)); void put_byte(ByteIOContext *s, int b); void put_buffer(ByteIOContext *s, const unsigned char *buf, int size); void put_le64(ByteIOContext *s, uint64_t val); void put_be64(ByteIOContext *s, uint64_t val); void put_le32(ByteIOContext *s, unsigned int val); void put_be32(ByteIOContext *s, unsigned int val); void put_le24(ByteIOContext *s, unsigned int val); void put_be24(ByteIOContext *s, unsigned int val); void put_le16(ByteIOContext *s, unsigned int val); void put_be16(ByteIOContext *s, unsigned int val); void put_tag(ByteIOContext *s, const char *tag); void put_strz(ByteIOContext *s, const char *buf); /** * fseek() equivalent for ByteIOContext. * @return new position or AVERROR. */ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence); /** * Skip given number of bytes forward. * @param offset number of bytes */ void url_fskip(ByteIOContext *s, offset_t offset); /** * ftell() equivalent for ByteIOContext. * @return position or AVERROR. */ offset_t url_ftell(ByteIOContext *s); /** * Gets the filesize. * @return filesize or AVERROR */ offset_t url_fsize(ByteIOContext *s); /** * feof() equivalent for ByteIOContext. * @return non zero if and only if end of file */ int url_feof(ByteIOContext *s); int url_ferror(ByteIOContext *s); int av_url_read_fpause(ByteIOContext *h, int pause); offset_t av_url_read_fseek(ByteIOContext *h, int stream_index, int64_t timestamp, int flags); #define URL_EOF (-1) /** @note return URL_EOF (-1) if EOF */ int url_fgetc(ByteIOContext *s); /** @warning currently size is limited */ #ifdef __GNUC__ int url_fprintf(ByteIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); #else int url_fprintf(ByteIOContext *s, const char *fmt, ...); #endif /** @note unlike fgets, the EOL character is not returned and a whole line is parsed. return NULL if first char read was EOF */ char *url_fgets(ByteIOContext *s, char *buf, int buf_size); void put_flush_packet(ByteIOContext *s); /** * Reads size bytes from ByteIOContext into buf. * @returns number of bytes read or AVERROR */ int get_buffer(ByteIOContext *s, unsigned char *buf, int size); /** * Reads size bytes from ByteIOContext into buf. * This reads at most 1 packet. If that is not enough fewer bytes will be * returned. * @returns number of bytes read or AVERROR */ int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size); /** @note return 0 if EOF, so you cannot use it if EOF handling is necessary */ int get_byte(ByteIOContext *s); unsigned int get_le24(ByteIOContext *s); unsigned int get_le32(ByteIOContext *s); uint64_t get_le64(ByteIOContext *s); unsigned int get_le16(ByteIOContext *s); char *get_strz(ByteIOContext *s, char *buf, int maxlen); unsigned int get_be16(ByteIOContext *s); unsigned int get_be24(ByteIOContext *s); unsigned int get_be32(ByteIOContext *s); uint64_t get_be64(ByteIOContext *s); uint64_t ff_get_v(ByteIOContext *bc); static inline int url_is_streamed(ByteIOContext *s) { return s->is_streamed; } /** @note when opened as read/write, the buffers are only used for writing */ int url_fdopen(ByteIOContext **s, URLContext *h); /** @warning must be called before any I/O */ int url_setbufsize(ByteIOContext *s, int buf_size); /** Reset the buffer for reading or writing. * @note Will drop any data currently in the buffer without transmitting it. * @param flags URL_RDONLY to set up the buffer for reading, or URL_WRONLY * to set up the buffer for writing. */ int url_resetbuf(ByteIOContext *s, int flags); /** @note when opened as read/write, the buffers are only used for writing */ int url_fopen(ByteIOContext **s, const char *filename, int flags); int url_fclose(ByteIOContext *s); URLContext *url_fileno(ByteIOContext *s); /** * Return the maximum packet size associated to packetized buffered file * handle. If the file is not packetized (stream like http or file on * disk), then 0 is returned. * * @param s buffered file handle * @return maximum packet size in bytes */ int url_fget_max_packet_size(ByteIOContext *s); int url_open_buf(ByteIOContext **s, uint8_t *buf, int buf_size, int flags); /** return the written or read size */ int url_close_buf(ByteIOContext *s); /** * Open a write only memory stream. * * @param s new IO context * @return zero if no error. */ int url_open_dyn_buf(ByteIOContext **s); /** * Open a write only packetized memory stream with a maximum packet * size of 'max_packet_size'. The stream is stored in a memory buffer * with a big endian 4 byte header giving the packet size in bytes. * * @param s new IO context * @param max_packet_size maximum packet size (must be > 0) * @return zero if no error. */ int url_open_dyn_packet_buf(ByteIOContext **s, int max_packet_size); /** * Return the written size and a pointer to the buffer. The buffer * must be freed with av_free(). * @param s IO context * @param pbuffer pointer to a byte buffer * @return the length of the byte buffer */ int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer); unsigned long ff_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, unsigned int len); unsigned long get_checksum(ByteIOContext *s); void init_checksum(ByteIOContext *s, unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long checksum); /* udp.c */ int udp_set_remote_url(URLContext *h, const char *uri); int udp_get_local_port(URLContext *h); int udp_get_file_handle(URLContext *h); #endif /* FFMPEG_AVIO_H */ --- NEW FILE: log.h --- /* * copyright (c) 2006 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 */ #ifndef FFMPEG_LOG_H #define FFMPEG_LOG_H #include <stdarg.h> /** * Describes the class of an AVClass context structure, that is an * arbitrary struct of which the first field is a pointer to an * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). */ typedef struct AVCLASS AVClass; struct AVCLASS { /** * The name of the class; usually it is the same name as the * context structure type to which the AVClass is associated. */ const char* class_name; /** * a pointer to a function which returns the name of a context * instance \p ctx associated with the class */ const char* (*item_name)(void* ctx); /** * a pointer to the first option specified in the class if any or NULL * * @see av_set_default_options() */ const struct AVOption *option; }; /* av_log API */ #if LIBAVUTIL_VERSION_INT < (50<<16) #define AV_LOG_QUIET -1 #define AV_LOG_FATAL 0 #define AV_LOG_ERROR 0 #define AV_LOG_WARNING 1 #define AV_LOG_INFO 1 #define AV_LOG_VERBOSE 1 #define AV_LOG_DEBUG 2 #else #define AV_LOG_QUIET -8 /** * something went really wrong and we will crash now */ #define AV_LOG_PANIC 0 /** * something went wrong and recovery is not possible * like no header in a format which depends on it or a combination * of parameters which are not allowed */ #define AV_LOG_FATAL 8 /** * something went wrong and cannot losslessly be recovered * but not all future data is affected */ #define AV_LOG_ERROR 16 /** * something somehow does not look correct / something which may or may not * lead to some problems like use of -vstrict -2 */ #define AV_LOG_WARNING 24 #define AV_LOG_INFO 32 #define AV_LOG_VERBOSE 40 /** * stuff which is only useful for libav* developers */ #define AV_LOG_DEBUG 48 #endif #if LIBAVUTIL_VERSION_INT < (50<<16) extern int av_log_level; #endif /** * Send the specified message to the log if the level is less than or equal to * the current av_log_level. By default, all logging messages are sent to * stderr. This behavior can be altered by setting a different av_vlog callback * function. * * @param avcl A pointer to an arbitrary struct of which the first field is a * pointer to an AVClass struct. * @param level The importance level of the message, lower values signifying * higher importance. * @param fmt The format string (printf-compatible) that specifies how * subsequent arguments are converted to output. * @see av_vlog */ #ifdef __GNUC__ void av_log(void*, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4))); #else void av_log(void*, int level, const char *fmt, ...); #endif void av_vlog(void*, int level, const char *fmt, va_list); int av_log_get_level(void); void av_log_set_level(int); void av_log_set_callback(void (*)(void*, int, const char*, va_list)); void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl); #endif /* FFMPEG_LOG_H */ --- NEW FILE: avcodec.h --- /* * copyright (c) 2001 Fabrice Bellard * * 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 */ [...2990 lines suppressed...] /* error handling */ #if EINVAL > 0 #define AVERROR(e) (-(e)) /**< Returns a negative error code from a POSIX error code, to return from library functions. */ #define AVUNERROR(e) (-(e)) /**< Returns a POSIX error code from a library function error return value. */ #else /* Some platforms have E* and errno already negated. */ #define AVERROR(e) (e) #define AVUNERROR(e) (e) #endif #define AVERROR_UNKNOWN AVERROR(EINVAL) /**< unknown error */ #define AVERROR_IO AVERROR(EIO) /**< I/O error */ #define AVERROR_NUMEXPECTED AVERROR(EDOM) /**< Number syntax expected in filename. */ #define AVERROR_INVALIDDATA AVERROR(EINVAL) /**< invalid data found */ #define AVERROR_NOMEM AVERROR(ENOMEM) /**< not enough memory */ #define AVERROR_NOFMT AVERROR(EILSEQ) /**< unknown format */ #define AVERROR_NOTSUPP AVERROR(ENOSYS) /**< Operation not supported. */ #define AVERROR_NOENT AVERROR(ENOENT) /**< No such file or directory. */ #define AVERROR_PATCHWELCOME -MKTAG('P','A','W','E') /**< Not yet implemented in FFmpeg. Patches welcome. */ #endif /* FFMPEG_AVCODEC_H */ --- NEW FILE: intfloat_readwrite.h --- /* * copyright (c) 2005 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 */ #ifndef FFMPEG_INTFLOAT_READWRITE_H #define FFMPEG_INTFLOAT_READWRITE_H #include <stdint.h> #include "common.h" /* IEEE 80 bits extended float */ typedef struct AVExtFloat { uint8_t exponent[2]; uint8_t mantissa[8]; } AVExtFloat; double av_int2dbl(int64_t v) av_const; float av_int2flt(int32_t v) av_const; double av_ext2dbl(const AVExtFloat ext) av_const; int64_t av_dbl2int(double d) av_const; int32_t av_flt2int(float d) av_const; AVExtFloat av_dbl2ext(double d) av_const; #endif /* FFMPEG_INTFLOAT_READWRITE_H */ --- NEW FILE: rational.h --- /* * Rational numbers * Copyright (c) 2003 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 rational.h * Rational numbers. * @author Michael Niedermayer <[EMAIL PROTECTED]> */ #ifndef FFMPEG_RATIONAL_H #define FFMPEG_RATIONAL_H #include <stdint.h> #include "common.h" /** * Rational number num/den. */ typedef struct AVRational{ int num; ///< numerator int den; ///< denominator } AVRational; /** * Compare two rationals. * @param a first rational * @param b second rational * @return 0 if a==b, 1 if a>b and -1 if a<b. */ static inline int av_cmp_q(AVRational a, AVRational b){ const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den; if(tmp) return (tmp>>63)|1; else return 0; } /** * Rational to double conversion. * @param a rational to convert * @return (double) a */ static inline double av_q2d(AVRational a){ return a.num / (double) a.den; } /** * Reduce a fraction. * This is useful for framerate calculations. * @param dst_nom destination numerator * @param dst_den destination denominator * @param nom source numerator * @param den source denominator * @param max the maximum allowed for dst_nom & dst_den * @return 1 if exact, 0 otherwise */ int av_reduce(int *dst_nom, int *dst_den, int64_t nom, int64_t den, int64_t max); /** * Multiplies two rationals. * @param b first rational. * @param c second rational. * @return b*c. */ AVRational av_mul_q(AVRational b, AVRational c) av_const; /** * Divides one rational by another. * @param b first rational. * @param c second rational. * @return b/c. */ AVRational av_div_q(AVRational b, AVRational c) av_const; /** * Adds two rationals. * @param b first rational. * @param c second rational. * @return b+c. */ AVRational av_add_q(AVRational b, AVRational c) av_const; /** * Subtracts one rational from another. * @param b first rational. * @param c second rational. * @return b-c. */ AVRational av_sub_q(AVRational b, AVRational c) av_const; /** * Converts a double precision floating point number to a rational. * @param d double to convert * @param max the maximum allowed numerator and denominator * @return (AVRational) d. */ AVRational av_d2q(double d, int max) av_const; #endif /* FFMPEG_RATIONAL_H */ --- NEW FILE: avutil.h --- /* * copyright (c) 2006 Michael Niedermayer <[EMAIL PROTECTED]> * * 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 */ #ifndef FFMPEG_AVUTIL_H #define FFMPEG_AVUTIL_H /** * @file avutil.h * external API header */ #define AV_STRINGIFY(s) AV_TOSTRING(s) #define AV_TOSTRING(s) #s #define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c) #define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) #define LIBAVUTIL_VERSION_MAJOR 49 #define LIBAVUTIL_VERSION_MINOR 6 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MICRO) #define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MICRO) #define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT #define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) #include "common.h" #include "mathematics.h" #include "rational.h" #include "intfloat_readwrite.h" #include "log.h" /** * Pixel format. Notes: * * PIX_FMT_RGB32 is handled in an endian-specific manner. A RGBA * color is put together as: * (A << 24) | (R << 16) | (G << 8) | B * This is stored as BGRA on little endian CPU architectures and ARGB on * big endian CPUs. * * When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized * image data is stored in AVFrame.data[0]. The palette is transported in * AVFrame.data[1] and, is 1024 bytes long (256 4-byte entries) and is * formatted the same as in PIX_FMT_RGB32 described above (i.e., it is * also endian-specific). Note also that the individual RGB palette * components stored in AVFrame.data[1] should be in the range 0..255. * This is important as many custom PAL8 video codecs that were designed * to run on the IBM VGA graphics adapter use 6-bit palette components. */ enum PixelFormat { PIX_FMT_NONE= -1, PIX_FMT_YUV420P, ///< Planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) PIX_FMT_YUYV422, ///< Packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr PIX_FMT_RGB24, ///< Packed RGB 8:8:8, 24bpp, RGBRGB... PIX_FMT_BGR24, ///< Packed RGB 8:8:8, 24bpp, BGRBGR... PIX_FMT_YUV422P, ///< Planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) PIX_FMT_YUV444P, ///< Planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) PIX_FMT_RGB32, ///< Packed RGB 8:8:8, 32bpp, (msb)8A 8R 8G 8B(lsb), in cpu endianness PIX_FMT_YUV410P, ///< Planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) PIX_FMT_YUV411P, ///< Planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) PIX_FMT_RGB565, ///< Packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), in cpu endianness PIX_FMT_RGB555, ///< Packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), in cpu endianness most significant bit to 0 PIX_FMT_GRAY8, ///< Y , 8bpp PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette PIX_FMT_YUVJ420P, ///< Planar YUV 4:2:0, 12bpp, full scale (jpeg) PIX_FMT_YUVJ422P, ///< Planar YUV 4:2:2, 16bpp, full scale (jpeg) PIX_FMT_YUVJ444P, ///< Planar YUV 4:4:4, 24bpp, full scale (jpeg) PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing(xvmc_render.h) PIX_FMT_XVMC_MPEG2_IDCT, PIX_FMT_UYVY422, ///< Packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 PIX_FMT_UYYVYY411, ///< Packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 PIX_FMT_BGR32, ///< Packed RGB 8:8:8, 32bpp, (msb)8A 8B 8G 8R(lsb), in cpu endianness PIX_FMT_BGR565, ///< Packed RGB 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), in cpu endianness PIX_FMT_BGR555, ///< Packed RGB 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), in cpu endianness most significant bit to 1 PIX_FMT_BGR8, ///< Packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) PIX_FMT_BGR4, ///< Packed RGB 1:2:1, 4bpp, (msb)1B 2G 1R(lsb) PIX_FMT_BGR4_BYTE, ///< Packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) PIX_FMT_RGB8, ///< Packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) PIX_FMT_RGB4, ///< Packed RGB 1:2:1, 4bpp, (msb)2R 3G 3B(lsb) PIX_FMT_RGB4_BYTE, ///< Packed RGB 1:2:1, 8bpp, (msb)2R 3G 3B(lsb) PIX_FMT_NV12, ///< Planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 for UV PIX_FMT_NV21, ///< as above, but U and V bytes are swapped PIX_FMT_RGB32_1, ///< Packed RGB 8:8:8, 32bpp, (msb)8R 8G 8B 8A(lsb), in cpu endianness PIX_FMT_BGR32_1, ///< Packed RGB 8:8:8, 32bpp, (msb)8B 8G 8R 8A(lsb), in cpu endianness PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian PIX_FMT_YUV440P, ///< Planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) PIX_FMT_YUVJ440P, ///< Planar YUV 4:4:0 full scale (jpeg) PIX_FMT_YUVA420P, ///< Planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions }; #ifdef WORDS_BIGENDIAN #define PIX_FMT_RGBA PIX_FMT_RGB32_1 #define PIX_FMT_BGRA PIX_FMT_BGR32_1 #define PIX_FMT_ARGB PIX_FMT_RGB32 #define PIX_FMT_ABGR PIX_FMT_BGR32 #define PIX_FMT_GRAY16 PIX_FMT_GRAY16BE #else #define PIX_FMT_RGBA PIX_FMT_BGR32 #define PIX_FMT_BGRA PIX_FMT_RGB32 #define PIX_FMT_ARGB PIX_FMT_BGR32_1 #define PIX_FMT_ABGR PIX_FMT_RGB32_1 #define PIX_FMT_GRAY16 PIX_FMT_GRAY16LE #endif #if LIBAVUTIL_VERSION_INT < (50<<16) #define PIX_FMT_UYVY411 PIX_FMT_UYYVYY411 #define PIX_FMT_RGBA32 PIX_FMT_RGB32 #define PIX_FMT_YUV422 PIX_FMT_YUYV422 #endif #endif /* FFMPEG_AVUTIL_H */ ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Audacity-cvs mailing list Audacity-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/audacity-cvs