aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-12-14 13:51:16 +0100
committerMichael Niedermayer <michaelni@gmx.at>2012-12-14 13:51:20 +0100
commit593f5c0f3c559a558efcb10a955cbac499e1fdbb (patch)
tree82ce1769739747df73b922d4bf4ffb903060db5c
parent5c78a8129c4bac2ae0c12d90672799325bc01e96 (diff)
parent8083332c2de9ee189f96844ff4c2d9be1844116f (diff)
downloadffmpeg-593f5c0f3c559a558efcb10a955cbac499e1fdbb.tar.gz
Merge commit '8083332c2de9ee189f96844ff4c2d9be1844116f'
* commit '8083332c2de9ee189f96844ff4c2d9be1844116f': asyncts: use clipped delta value when setting resample compensation asyncts: fix flushing of final samples at EOF vp6: properly fail on unsupported feature Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/vp6.c4
-rw-r--r--libavfilter/af_asyncts.c16
2 files changed, 10 insertions, 10 deletions
diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c
index bafa2b4d0a..bf168c886e 100644
--- a/libavcodec/vp6.c
+++ b/libavcodec/vp6.c
@@ -63,8 +63,8 @@ static int vp6_parse_header(VP56Context *s, const uint8_t *buf, int buf_size)
return 0;
s->filter_header = buf[1] & 0x06;
if (buf[1] & 1) {
- av_log(s->avctx, AV_LOG_ERROR, "interlacing not supported\n");
- return 0;
+ av_log_missing_feature(s->avctx, "Interlacing", 0);
+ return AVERROR_PATCHWELCOME;
}
if (separated_coeff || !s->filter_header) {
coeff_offset = AV_RB16(buf+2) - 2;
diff --git a/libavfilter/af_asyncts.c b/libavfilter/af_asyncts.c
index b5d0aea973..785c9c4acd 100644
--- a/libavfilter/af_asyncts.c
+++ b/libavfilter/af_asyncts.c
@@ -110,6 +110,12 @@ static int config_props(AVFilterLink *link)
return 0;
}
+/* get amount of data currently buffered, in samples */
+static int64_t get_delay(ASyncContext *s)
+{
+ return avresample_available(s->avr) + avresample_get_delay(s->avr);
+}
+
static int request_frame(AVFilterLink *link)
{
AVFilterContext *ctx = link->src;
@@ -122,7 +128,7 @@ static int request_frame(AVFilterLink *link)
ret = ff_request_frame(ctx->inputs[0]);
/* flush the fifo */
- if (ret == AVERROR_EOF && (nb_samples = avresample_get_delay(s->avr))) {
+ if (ret == AVERROR_EOF && (nb_samples = get_delay(s))) {
AVFilterBufferRef *buf = ff_get_audio_buffer(link, AV_PERM_WRITE,
nb_samples);
if (!buf)
@@ -149,12 +155,6 @@ static int write_to_fifo(ASyncContext *s, AVFilterBufferRef *buf)
return ret;
}
-/* get amount of data currently buffered, in samples */
-static int64_t get_delay(ASyncContext *s)
-{
- return avresample_available(s->avr) + avresample_get_delay(s->avr);
-}
-
static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *buf)
{
AVFilterContext *ctx = inlink->dst;
@@ -191,7 +191,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *buf)
if (s->resample) {
int comp = av_clip(delta, -s->max_comp, s->max_comp);
av_log(ctx, AV_LOG_VERBOSE, "Compensating %d samples per second.\n", comp);
- avresample_set_compensation(s->avr, delta, inlink->sample_rate);
+ avresample_set_compensation(s->avr, comp, inlink->sample_rate);
}
delta = 0;
}