- Speex encoding via libspeex
- 4:2:2 H.264 decoding support
- Pulseaudio input device
+- Prores encoder
+- Video Decoder Acceleration (VDA) HWAccel module.
- replacement Indeo 3 decoder
+- new ffmpeg option: -map_channel
+- volume audio filter added
+- earwax audio filter added
+- libv4l2 support (--enable-libv4l2)
+ - TLS/SSL and HTTPS protocol support
-version 0.7:
-
-- E-AC-3 audio encoder
-- ac3enc: add channel coupling support
-- floating-point sample format support for (E-)AC-3, DCA, AAC, Vorbis decoders
-- H.264/MPEG frame-level multithreading
-- av_metadata_* functions renamed to av_dict_* and moved to libavutil
-- 4:4:4 H.264 decoding support
-- 10-bit H.264 optimizations for x86
-- bump libswscale for recently reported ABI break
+version 0.8:
-version 0.7_beta2:
-
-- VP8 frame-level multithreading
-- NEON optimizations for VP8
-- removed a lot of deprecated API cruft
-- FFT and IMDCT optimizations for AVX (Sandy Bridge) processors
-- DPX image encoder
-- SMPTE 302M AES3 audio decoder
-- ffmpeg no longer quits after the 'q' key is pressed; use 'ctrl+c' instead
-- 9bit and 10bit per sample support in the H.264 decoder
-
-
-version 0.7_beta1:
-
+- many many things we forgot because we rather write code than changelogs
- WebM support in Matroska de/muxer
- low overhead Ogg muxing
- MMS-TCP support
External library support:
--enable-avisynth enable reading of AVISynth script files [no]
--enable-bzlib enable bzlib [autodetect]
+ --enable-libcelt enable CELT decoding via libcelt [no]
--enable-frei0r enable frei0r video filtering
+ --enable-libaacplus enable AAC+ encoding via libaacplus [no]
+ --enable-gnutls enable gnutls [no]
--enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
--enable-libopencv enable video filtering via libopencv [no]
--enable-libxavs enable AVS encoding via xavs [no]
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
+ --enable-openal enable OpenAL 1.1 capture support [no]
--enable-mlib enable Sun medialib [no]
+ --enable-openssl enable openssl [no]
--enable-zlib enable zlib [autodetect]
Advanced options (experts only):
fastdiv
ffmpeg
avconv
- avplay
- avprobe
- avserver
+ ffplay
+ ffprobe
+ ffserver
fft
frei0r
+ gnutls
golomb
gpl
gray
mpegaudiodsp
network
nonfree
+ openal
+ openssl
pic
postproc
rdft
die_license_disabled gpl libxvid
die_license_disabled gpl x11grab
+die_license_disabled nonfree libaacplus
die_license_disabled nonfree libfaac
+ die_license_disabled nonfree openssl
die_license_disabled version3 libopencore_amrnb
die_license_disabled version3 libopencore_amrwb
# these are off by default, so fail if requested and not available
enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
+enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
+enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
+enabled libdc1394 && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
+ enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
enabled libdirac && require_pkg_config dirac \
"libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h" \
"dirac_decoder_init dirac_encoder_init"
die "ERROR: libx264 version must be >= 0.118."; }
enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
+enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
+ check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
+ die "ERROR: openal not found"; } &&
+ { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
+ die "ERROR: openal version must be 1.1 or compatible"; }
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
+ enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
+ check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
+ check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
+ die "ERROR: openssl not found"; }
-# libdc1394 check
-if enabled libdc1394; then
- { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
- enable libdc1394_2; } ||
- { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
- enable libdc1394_1; } ||
- die "ERROR: No version of libdc1394 found "
-fi
-
+SDL_CONFIG="${cross_prefix}sdl-config"
if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then
check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
enable sdl &&
echo "libva enabled ${vaapi-no}"
echo "libvdpau enabled ${vdpau-no}"
echo "AVISynth enabled ${avisynth-no}"
+echo "libcelt enabled ${libcelt-no}"
echo "frei0r enabled ${frei0r-no}"
+ echo "gnutls enabled ${gnutls-no}"
echo "libcdio support ${libcdio-no}"
echo "libdc1394 support ${libdc1394-no}"
echo "libdirac enabled ${libdirac-no}"
echo "libx264 enabled ${libx264-no}"
echo "libxavs enabled ${libxavs-no}"
echo "libxvid enabled ${libxvid-no}"
+echo "openal enabled ${openal-no}"
+ echo "openssl enabled ${openssl-no}"
echo "zlib enabled ${zlib-no}"
echo "bzlib enabled ${bzlib-no}"
echo
API changes, most recent first:
-2011-xx-xx - xxxxxxx - lavc 53.15.0
+2011-11-03 - 96949da - lavu 51.23.0
+ Add av_strcasecmp() and av_strncasecmp() to avstring.h.
+
+2011-10-20 - b35e9e1 - lavu 51.22.0
+ Add av_strtok() to avstring.h.
+
+ 2011-11-xx - xxxxxxx - lavf 53.13.0
+ Add avformat_network_init()/avformat_network_uninit()
+
+2011-10-27 - 512557b - lavc 53.15.0
Remove avcodec_parse_frame.
Deprecate AVCodecContext.parse_only and CODEC_CAP_PARSE_ONLY.
unsigned int avpriv_toupper4(unsigned int x);
+/**
+ * does needed setup of pkt_pts/pos and such for (re)get_buffer();
+ */
+void ff_init_buffer_info(AVCodecContext *s, AVFrame *pic);
+
+ int avpriv_lock_avformat(void);
+ int avpriv_unlock_avformat(void);
+
#endif /* AVCODEC_INTERNAL_H */
#define AVCODEC_VERSION_H
#define LIBAVCODEC_VERSION_MAJOR 53
- #define LIBAVCODEC_VERSION_MINOR 27
-#define LIBAVCODEC_VERSION_MINOR 16
++#define LIBAVCODEC_VERSION_MINOR 28
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
OBJS-$(CONFIG_RTP_PROTOCOL) += rtpproto.o
OBJS-$(CONFIG_TCP_PROTOCOL) += tcp.o
+ OBJS-$(CONFIG_TLS_PROTOCOL) += tls.o
OBJS-$(CONFIG_UDP_PROTOCOL) += udp.o
-EXAMPLES = metadata output
+
TESTPROGS = seek
TOOLS = pktdumper probetest
size -= n;
track = matroska_find_track_by_num(matroska, num);
- if (size <= 3 || !track || !track->stream) {
+ if (!track || !track->stream) {
av_log(matroska->ctx, AV_LOG_INFO,
"Invalid stream %"PRIu64" or size %u\n", num, size);
- return AVERROR_INVALIDDATA;
+ return res;
- }
+ } else if (size <= 3)
+ return 0;
st = track->stream;
if (st->discard >= AVDISCARD_ALL)
return res;
--- /dev/null
+ /*
+ * Copyright (c) 2007 The Libav Project
+ *
+ * This file is part of Libav.
+ *
+ * Libav 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.
+ *
+ * Libav 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 Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
++#include "libavutil/avutil.h"
+ #include "network.h"
+ #include "libavcodec/internal.h"
+
+ #define THREADS (HAVE_PTHREADS || (defined(WIN32) && !defined(__MINGW32CE__)))
+
+ #if THREADS
+ #if HAVE_PTHREADS
+ #include <pthread.h>
+ #else
+ #include "libavcodec/w32pthreads.h"
+ #endif
+ #endif
+
+ #if CONFIG_OPENSSL
+ #include <openssl/ssl.h>
+ static int openssl_init;
+ #if THREADS
+ #include <openssl/crypto.h>
+ #include "libavutil/avutil.h"
+ pthread_mutex_t *openssl_mutexes;
+ static void openssl_lock(int mode, int type, const char *file, int line)
+ {
+ if (mode & CRYPTO_LOCK)
+ pthread_mutex_lock(&openssl_mutexes[type]);
+ else
+ pthread_mutex_unlock(&openssl_mutexes[type]);
+ }
+ #ifndef WIN32
+ static unsigned long openssl_thread_id(void)
+ {
+ return (intptr_t) pthread_self();
+ }
+ #endif
+ #endif
+ #endif
+ #if CONFIG_GNUTLS
+ #include <gnutls/gnutls.h>
+ #if THREADS && GNUTLS_VERSION_NUMBER <= 0x020b00
+ #include <gcrypt.h>
+ #include <errno.h>
+ #undef malloc
+ #undef free
+ GCRY_THREAD_OPTION_PTHREAD_IMPL;
+ #endif
+ #endif
+
+ void ff_tls_init(void)
+ {
+ avpriv_lock_avformat();
+ #if CONFIG_OPENSSL
+ if (!openssl_init) {
+ SSL_library_init();
+ SSL_load_error_strings();
+ #if THREADS
+ if (!CRYPTO_get_locking_callback()) {
+ int i;
+ openssl_mutexes = av_malloc(sizeof(pthread_mutex_t) * CRYPTO_num_locks());
+ for (i = 0; i < CRYPTO_num_locks(); i++)
+ pthread_mutex_init(&openssl_mutexes[i], NULL);
+ CRYPTO_set_locking_callback(openssl_lock);
+ #ifndef WIN32
+ CRYPTO_set_id_callback(openssl_thread_id);
+ #endif
+ }
+ #endif
+ }
+ openssl_init++;
+ #endif
+ #if CONFIG_GNUTLS
+ #if THREADS && GNUTLS_VERSION_NUMBER < 0x020b00
+ if (gcry_control(GCRYCTL_ANY_INITIALIZATION_P) == 0)
+ gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
+ #endif
+ gnutls_global_init();
+ #endif
+ avpriv_unlock_avformat();
+ }
+
+ void ff_tls_deinit(void)
+ {
+ avpriv_lock_avformat();
+ #if CONFIG_OPENSSL
+ openssl_init--;
+ if (!openssl_init) {
+ #if THREADS
+ if (CRYPTO_get_locking_callback() == openssl_lock) {
+ int i;
+ CRYPTO_set_locking_callback(NULL);
+ for (i = 0; i < CRYPTO_num_locks(); i++)
+ pthread_mutex_destroy(&openssl_mutexes[i]);
+ av_free(openssl_mutexes);
+ }
+ #endif
+ }
+ #endif
+ #if CONFIG_GNUTLS
+ gnutls_global_deinit();
+ #endif
+ avpriv_unlock_avformat();
+ }
+
+ int ff_network_init(void)
+ {
+ #if HAVE_WINSOCK2_H
+ WSADATA wsaData;
+ if (WSAStartup(MAKEWORD(1,1), &wsaData))
+ return 0;
+ #endif
+ return 1;
+ }
+
+ int ff_network_wait_fd(int fd, int write)
+ {
+ int ev = write ? POLLOUT : POLLIN;
+ struct pollfd p = { .fd = fd, .events = ev, .revents = 0 };
+ int ret;
+ ret = poll(&p, 1, 100);
+ return ret < 0 ? ff_neterrno() : p.revents & (ev | POLLERR | POLLHUP) ? 0 : AVERROR(EAGAIN);
+ }
+
+ void ff_network_close(void)
+ {
+ #if HAVE_WINSOCK2_H
+ WSACleanup();
+ #endif
+ }
+
+ #if HAVE_WINSOCK2_H
+ int ff_neterrno(void)
+ {
+ int err = WSAGetLastError();
+ switch (err) {
+ case WSAEWOULDBLOCK:
+ return AVERROR(EAGAIN);
+ case WSAEINTR:
+ return AVERROR(EINTR);
+ }
+ return -err;
+ }
+ #endif
+
+ int ff_is_multicast_address(struct sockaddr *addr)
+ {
+ if (addr->sa_family == AF_INET) {
+ return IN_MULTICAST(ntohl(((struct sockaddr_in *)addr)->sin_addr.s_addr));
+ }
+ #if HAVE_STRUCT_SOCKADDR_IN6
+ if (addr->sa_family == AF_INET6) {
+ return IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6 *)addr)->sin6_addr);
+ }
+ #endif
+
+ return 0;
+ }
+
#include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 53
- #define LIBAVFORMAT_VERSION_MINOR 18
-#define LIBAVFORMAT_VERSION_MINOR 13
++#define LIBAVFORMAT_VERSION_MINOR 19
#define LIBAVFORMAT_VERSION_MICRO 0
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \