Commit 10d2ae8c authored by Michael Niedermayer's avatar Michael Niedermayer

Merge remote branch 'qatar/master'

* qatar/master:
  Makefile: Include dependencies for test tools, too
  Remove a version check in av_log made unnecessary by the big bump.
  update last major version increase dates in APIchanges
  Reduce picture size for yadif.
  oggdec: use av_freep() instead of av_free()
  avio: Fix sanity checks in ffurl_read*
  libavformat: Free AVFormatContext->streams
  libavformat: Make protocols pass URLContext as log context where available
  asf: remove commented out code in asf_read_seek
not pulled:  libpostproc: Remove crufty code disabled by the big bump.
  Reflect 0.7_beta1 release in the Changelog
not pulled:  sws: remove disabled cruft.
  lavu: remove disabled ff_random_get_seed cruft.
  lavu: remove disabled sha1 cruft.

Conflicts:
	Changelog
	libavutil/sha1.h
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 2c18893a f83acb09
......@@ -9,6 +9,11 @@ version <next>:
- mpeg2 aspect ratio dection fixed
- libxvid aspect pickiness fixed
- Frame multithreaded decoding
- Lots of deprecated API cruft removed
version 0.7_beta1:
- WebM support in Matroska de/muxer
- low overhead Ogg muxing
- MMS-TCP support
......
......@@ -93,6 +93,7 @@ tools/%.o: tools/%.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $(CC_O) $<
-include $(wildcard tools/*.d)
-include $(wildcard tests/*.d)
ffplay.o: CFLAGS += $(SDL_CFLAGS)
......
Never assume the API of libav* to be stable unless at least 1 week has passed since
the last major version increase.
The last version increases were:
libavcodec: ?
libavdevice: ?
libavfilter: 2009-10-18
libavformat: ?
libpostproc: ?
libswscale: ?
libavutil: 2009-03-08
libavcodec: 2011-04-18
libavdevice: 2011-04-18
libavfilter: 2011-04-18
libavformat: 2011-04-18
libpostproc: 2011-04-18
libswscale: 2011-04-18
libavutil: 2011-04-18
API changes, most recent first:
......
......@@ -195,7 +195,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags)
av_strlcpy(s->playlisturl, "http://", sizeof(s->playlisturl));
av_strlcat(s->playlisturl, nested_url, sizeof(s->playlisturl));
} else {
av_log(NULL, AV_LOG_ERROR, "Unsupported url %s\n", uri);
av_log(h, AV_LOG_ERROR, "Unsupported url %s\n", uri);
ret = AVERROR(EINVAL);
goto fail;
}
......@@ -218,7 +218,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags)
}
if (s->n_segments == 0) {
av_log(NULL, AV_LOG_WARNING, "Empty playlist\n");
av_log(h, AV_LOG_WARNING, "Empty playlist\n");
ret = AVERROR(EIO);
goto fail;
}
......@@ -258,7 +258,7 @@ retry:
return ret;
}
if (s->cur_seq_no < s->start_seq_no) {
av_log(NULL, AV_LOG_WARNING,
av_log(h, AV_LOG_WARNING,
"skipping %d segments ahead, expired from playlist\n",
s->start_seq_no - s->cur_seq_no);
s->cur_seq_no = s->start_seq_no;
......@@ -274,12 +274,12 @@ retry:
goto retry;
}
url = s->segments[s->cur_seq_no - s->start_seq_no]->url,
av_log(NULL, AV_LOG_DEBUG, "opening %s\n", url);
av_log(h, AV_LOG_DEBUG, "opening %s\n", url);
ret = ffurl_open(&s->seg_hd, url, AVIO_FLAG_READ);
if (ret < 0) {
if (url_interrupt_cb())
return AVERROR_EXIT;
av_log(NULL, AV_LOG_WARNING, "Unable to open %s\n", url);
av_log(h, AV_LOG_WARNING, "Unable to open %s\n", url);
s->cur_seq_no++;
goto retry;
}
......
......@@ -1262,27 +1262,6 @@ static int asf_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int
/* find the position */
pos = st->index_entries[index].pos;
// various attempts to find key frame have failed so far
// asf_reset_header(s);
// avio_seek(s->pb, pos, SEEK_SET);
// key_pos = pos;
// for(i=0;i<16;i++){
// pos = avio_tell(s->pb);
// if (av_read_frame(s, &pkt) < 0){
// av_log(s, AV_LOG_INFO, "seek failed\n");
// return -1;
// }
// asf_st = s->streams[stream_index]->priv_data;
// pos += st->parser->frame_offset;
//
// if (pkt.size > b) {
// b = pkt.size;
// key_pos = pos;
// }
//
// av_free_packet(&pkt);
// }
/* do the seek */
av_log(s, AV_LOG_DEBUG, "SEEKTO: %"PRId64"\n", pos);
avio_seek(s->pb, pos, SEEK_SET);
......
......@@ -50,7 +50,7 @@ static int gopher_connect(URLContext *h, const char *path)
if (!path) return AVERROR(EINVAL);
break;
default:
av_log(NULL, AV_LOG_WARNING,
av_log(h, AV_LOG_WARNING,
"Gopher protocol type '%c' not supported yet!\n",
*path);
return AVERROR(EINVAL);
......
......@@ -70,7 +70,7 @@ void ff_http_set_headers(URLContext *h, const char *headers)
int len = strlen(headers);
if (len && strcmp("\r\n", headers + len - 2))
av_log(NULL, AV_LOG_ERROR, "No trailing CRLF found in HTTP header.\n");
av_log(h, AV_LOG_ERROR, "No trailing CRLF found in HTTP header.\n");
av_strlcpy(s->headers, headers, sizeof(s->headers));
}
......@@ -232,7 +232,7 @@ static int process_line(URLContext *h, char *line, int line_count,
* don't abort until all headers have been parsed. */
if (s->http_code >= 400 && s->http_code < 600 && s->http_code != 401) {
end += strspn(end, SPACE_CHARS);
av_log(NULL, AV_LOG_WARNING, "HTTP error %d %s\n",
av_log(h, AV_LOG_WARNING, "HTTP error %d %s\n",
s->http_code, end);
return -1;
}
......
......@@ -64,7 +64,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
snprintf(portstr, sizeof(portstr), "%d", port);
ret = getaddrinfo(hostname, portstr, &hints, &ai);
if (ret) {
av_log(NULL, AV_LOG_ERROR,
av_log(h, AV_LOG_ERROR,
"Failed to resolve hostname %s: %s\n",
hostname, gai_strerror(ret));
return AVERROR(EIO);
......@@ -126,7 +126,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
optlen = sizeof(ret);
getsockopt (fd, SOL_SOCKET, SO_ERROR, &ret, &optlen);
if (ret != 0) {
av_log(NULL, AV_LOG_ERROR,
av_log(h, AV_LOG_ERROR,
"TCP connection to %s:%d failed: %s\n",
hostname, port, strerror(ret));
goto fail;
......
......@@ -266,7 +266,7 @@ int ff_udp_set_remote_url(URLContext *h, const char *uri)
if (connect(s->udp_fd, (struct sockaddr *) &s->dest_addr,
s->dest_addr_len)) {
s->is_connected = 0;
av_log(NULL, AV_LOG_ERROR, "connect: %s\n", strerror(errno));
av_log(h, AV_LOG_ERROR, "connect: %s\n", strerror(errno));
return AVERROR(EIO);
}
}
......@@ -410,7 +410,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
/* limit the tx buf size to limit latency */
tmp = s->buffer_size;
if (setsockopt(udp_fd, SOL_SOCKET, SO_SNDBUF, &tmp, sizeof(tmp)) < 0) {
av_log(NULL, AV_LOG_ERROR, "setsockopt(SO_SNDBUF): %s\n", strerror(errno));
av_log(h, AV_LOG_ERROR, "setsockopt(SO_SNDBUF): %s\n", strerror(errno));
goto fail;
}
} else {
......@@ -418,14 +418,14 @@ static int udp_open(URLContext *h, const char *uri, int flags)
* avoid losing data on OSes that set this too low by default. */
tmp = s->buffer_size;
if (setsockopt(udp_fd, SOL_SOCKET, SO_RCVBUF, &tmp, sizeof(tmp)) < 0) {
av_log(NULL, AV_LOG_WARNING, "setsockopt(SO_RECVBUF): %s\n", strerror(errno));
av_log(h, AV_LOG_WARNING, "setsockopt(SO_RECVBUF): %s\n", strerror(errno));
}
/* make the socket non-blocking */
ff_socket_nonblock(udp_fd, 1);
}
if (s->is_connected) {
if (connect(udp_fd, (struct sockaddr *) &s->dest_addr, s->dest_addr_len)) {
av_log(NULL, AV_LOG_ERROR, "connect: %s\n", strerror(errno));
av_log(h, AV_LOG_ERROR, "connect: %s\n", strerror(errno));
goto fail;
}
}
......
......@@ -2586,6 +2586,7 @@ void avformat_free_context(AVFormatContext *s)
av_freep(&s->chapters);
av_metadata_free(&s->metadata);
av_freep(&s->key);
av_freep(&s->streams);
av_free(s);
}
......
......@@ -35,7 +35,6 @@ HEADERS = adler32.h \
rational.h \
samplefmt.h \
sha.h \
sha1.h \
BUILT_HEADERS = avconfig.h
......
......@@ -100,7 +100,7 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
line[0]=0;
#undef fprintf
if(print_prefix && avc) {
if(avc->version >= (50<<16 | 15<<8 | 3) && avc->parent_log_context_offset){
if (avc->parent_log_context_offset) {
AVClass** parent= *(AVClass***)(((uint8_t*)ptr) + avc->parent_log_context_offset);
if(parent && *parent){
snprintf(line, sizeof(line), "[%s @ %p] ", (*parent)->item_name(parent), parent);
......
......@@ -80,11 +80,3 @@ uint32_t av_get_random_seed(void)
return seed;
return get_generic_seed();
}
#if LIBAVUTIL_VERSION_MAJOR < 51
attribute_deprecated uint32_t ff_random_get_seed(void);
uint32_t ff_random_get_seed(void)
{
return av_get_random_seed();
}
#endif
......@@ -25,7 +25,6 @@
#include "avutil.h"
#include "bswap.h"
#include "sha.h"
#include "sha1.h"
#include "intreadwrite.h"
/** hash context */
......@@ -324,29 +323,6 @@ void av_sha_final(AVSHA* ctx, uint8_t *digest)
AV_WB32(digest + i*4, ctx->state[i]);
}
#if LIBAVUTIL_VERSION_MAJOR < 51
struct AVSHA1 {
AVSHA sha;
};
const int av_sha1_size = sizeof(struct AVSHA1);
void av_sha1_init(struct AVSHA1* context)
{
av_sha_init(&context->sha, 160);
}
void av_sha1_update(struct AVSHA1* context, const uint8_t* data, unsigned int len)
{
av_sha_update(&context->sha, data, len);
}
void av_sha1_final(struct AVSHA1* context, uint8_t digest[20])
{
av_sha_final(&context->sha, digest);
}
#endif
#ifdef TEST
#include <stdio.h>
#undef printf
......
/*
* Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
*
* 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 AVUTIL_SHA1_H
#define AVUTIL_SHA1_H
#include <stdint.h>
extern const int av_sha1_size;
struct AVSHA1;
/**
* Initialize SHA-1 hashing.
*
* @param context pointer to the function context (of size av_sha_size)
* @deprecated use av_sha_init() instead
*/
void av_sha1_init(struct AVSHA1* context);
/**
* Update hash value.
*
* @param context hash function context
* @param data input data to update hash with
* @param len input data length
* @deprecated use av_sha_update() instead
*/
void av_sha1_update(struct AVSHA1* context, const uint8_t* data, unsigned int len);
/**
* Finish hashing and output digest value.
*
* @param context hash function context
* @param digest buffer where output digest value is stored
* @deprecated use av_sha_final() instead
*/
void av_sha1_final(struct AVSHA1* context, uint8_t digest[20]);
#endif /* AVUTIL_SHA1_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment