diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-06-21 21:57:39 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-06-21 22:37:43 +0200 |
commit | 87dced8074cf83e74e69d7dee725c8d62601c4e8 (patch) | |
tree | 7fda3c5c5510001e32cbbeddc4030e5e84df1138 | |
parent | fd0b8c6ad53ff2a01868ecf1bbf0c936876a0c61 (diff) | |
parent | 1d01fee980edf60215acd94daf2533a9fefb9342 (diff) | |
download | ffmpeg-87dced8074cf83e74e69d7dee725c8d62601c4e8.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
fix hardcoded tables compililation caused by missing math constants
lavf: Make codec_tag arrays constant
twinvq: give massive struct a name.
lavf, lavu: version bumps and APIchanges for av_gettime() move
lavfi/audio: don't set cur_buf in ff_filter_samples().
lavfi/fifo: add audio version of the fifo filter.
fifo: fix parenthesis placement.
lavfi: rename vf_fifo.c -> fifo.c
lavc: remove stats_in from AVCodecContext options table.
Conflicts:
doc/APIchanges
libavfilter/Makefile
libavfilter/allfilters.c
libavfilter/audio.c
libavfilter/fifo.c
libavformat/version.h
libavutil/avutil.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | doc/APIchanges | 3 | ||||
-rw-r--r-- | libavcodec/aacps_tablegen.h | 1 | ||||
-rw-r--r-- | libavcodec/cos_tablegen.c | 3 | ||||
-rw-r--r-- | libavcodec/options_table.h | 1 | ||||
-rw-r--r-- | libavcodec/sinewin_tablegen.c | 3 | ||||
-rw-r--r-- | libavcodec/twinvq_data.h | 2 | ||||
-rw-r--r-- | libavfilter/Makefile | 3 | ||||
-rw-r--r-- | libavfilter/allfilters.c | 1 | ||||
-rw-r--r-- | libavfilter/audio.c | 18 | ||||
-rw-r--r-- | libavfilter/fifo.c (renamed from libavfilter/vf_fifo.c) | 73 | ||||
-rw-r--r-- | libavformat/cafdec.c | 2 | ||||
-rw-r--r-- | libavformat/ivfdec.c | 2 | ||||
-rw-r--r-- | libavformat/version.h | 2 | ||||
-rw-r--r-- | libavutil/avutil.h | 2 |
15 files changed, 75 insertions, 43 deletions
@@ -1903,7 +1903,7 @@ AS_O='-o $@' CC_O='-o $@' CXX_O='-o $@' -host_cflags='-D_ISOC99_SOURCE -O3 -g' +host_cflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 -O3 -g' host_libs='-lm' target_path='$(CURDIR)' diff --git a/doc/APIchanges b/doc/APIchanges index d5785e02b6..b36138ebae 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -38,6 +38,9 @@ API changes, most recent first: 2012-03-26 - a67d9cf - lavfi 2.66.100 Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions. +2012-06-20 - ae0a301 - lavu 51.33.0 + Move av_gettime() to libavutil, add libavutil/time.h + 2012-xx-xx - xxxxxxx - lavr 0.0.3 Add a parameter to avresample_build_matrix() for Dolby/DPLII downmixing. diff --git a/libavcodec/aacps_tablegen.h b/libavcodec/aacps_tablegen.h index 70cc96c9d7..a8c4021756 100644 --- a/libavcodec/aacps_tablegen.h +++ b/libavcodec/aacps_tablegen.h @@ -23,6 +23,7 @@ #ifndef AACPS_TABLEGEN_H #define AACPS_TABLEGEN_H +#include <math.h> #include <stdint.h> #if CONFIG_HARDCODED_TABLES diff --git a/libavcodec/cos_tablegen.c b/libavcodec/cos_tablegen.c index 1577166a46..af9391dd20 100644 --- a/libavcodec/cos_tablegen.c +++ b/libavcodec/cos_tablegen.c @@ -24,9 +24,6 @@ #include <string.h> #include <math.h> -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif #define BITS 16 #define FLOATFMT "%.18e" #define FIXEDFMT "%6d" diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index 92b19e23a2..f4d46190b6 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -167,7 +167,6 @@ static const AVOption options[]={ {"block_align", NULL, OFFSET(block_align), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, {"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"stats_out", NULL, OFFSET(stats_out), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX}, -{"stats_in", NULL, OFFSET(stats_in), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX}, {"qsquish", "how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)", OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, 0, 99, V|E}, {"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, {"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, diff --git a/libavcodec/sinewin_tablegen.c b/libavcodec/sinewin_tablegen.c index b2988d3160..561ae3ea1d 100644 --- a/libavcodec/sinewin_tablegen.c +++ b/libavcodec/sinewin_tablegen.c @@ -26,9 +26,6 @@ #define SINETABLE(size) \ float ff_sine_##size[size] #define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif #include "sinewin_tablegen.h" #include "tableprint.h" diff --git a/libavcodec/twinvq_data.h b/libavcodec/twinvq_data.h index 3042cd1beb..63911f85f4 100644 --- a/libavcodec/twinvq_data.h +++ b/libavcodec/twinvq_data.h @@ -135,7 +135,7 @@ static const uint16_t bark_tab_s44_128[] = { * * without risking a segfault on malformed files. */ -static const struct { +static const struct twinvq_data { float lsp08[504]; int16_t fcb08l[640]; int16_t fcb08m[320]; diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 6de6ef4baf..088ab8f6a4 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -47,6 +47,7 @@ OBJS-$(CONFIG_AVFORMAT) += lavfutils.o OBJS-$(CONFIG_SWSCALE) += lswsutils.o OBJS-$(CONFIG_ACONVERT_FILTER) += af_aconvert.o +OBJS-$(CONFIG_AFIFO_FILTER) += fifo.o OBJS-$(CONFIG_AFORMAT_FILTER) += af_aformat.o OBJS-$(CONFIG_AMERGE_FILTER) += af_amerge.o OBJS-$(CONFIG_AMIX_FILTER) += af_amix.o @@ -87,7 +88,7 @@ OBJS-$(CONFIG_DRAWBOX_FILTER) += vf_drawbox.o OBJS-$(CONFIG_DRAWTEXT_FILTER) += vf_drawtext.o OBJS-$(CONFIG_FADE_FILTER) += vf_fade.o OBJS-$(CONFIG_FIELDORDER_FILTER) += vf_fieldorder.o -OBJS-$(CONFIG_FIFO_FILTER) += vf_fifo.o +OBJS-$(CONFIG_FIFO_FILTER) += fifo.o OBJS-$(CONFIG_FORMAT_FILTER) += vf_format.o OBJS-$(CONFIG_FPS_FILTER) += vf_fps.o OBJS-$(CONFIG_FREI0R_FILTER) += vf_frei0r.o diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 6d2d6cf2e9..3590b815a6 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -35,6 +35,7 @@ void avfilter_register_all(void) initialized = 1; REGISTER_FILTER (ACONVERT, aconvert, af); + REGISTER_FILTER (AFIFO, afifo, af); REGISTER_FILTER (AFORMAT, aformat, af); REGISTER_FILTER (AMERGE, amerge, af); REGISTER_FILTER (AMIX, amix, af); diff --git a/libavfilter/audio.c b/libavfilter/audio.c index 0a5248936a..d052ad9cf3 100644 --- a/libavfilter/audio.c +++ b/libavfilter/audio.c @@ -181,6 +181,7 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref) void (*filter_samples)(AVFilterLink *, AVFilterBufferRef *); AVFilterPad *dst = link->dstpad; int64_t pts; + AVFilterBufferRef *buf_out; FF_TPRINTF_START(NULL, filter_samples); ff_tlog_link(NULL, link, 1); @@ -194,22 +195,23 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref) "Copying audio data in avfilter (have perms %x, need %x, reject %x)\n", samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms); - link->cur_buf = ff_default_get_audio_buffer(link, dst->min_perms, - samplesref->audio->nb_samples); - link->cur_buf->pts = samplesref->pts; - link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate; + buf_out = ff_default_get_audio_buffer(link, dst->min_perms, + samplesref->audio->nb_samples); + buf_out->pts = samplesref->pts; + buf_out->audio->sample_rate = samplesref->audio->sample_rate; /* Copy actual data into new samples buffer */ - av_samples_copy(link->cur_buf->extended_data, samplesref->extended_data, + av_samples_copy(buf_out->extended_data, samplesref->extended_data, 0, 0, samplesref->audio->nb_samples, av_get_channel_layout_nb_channels(link->channel_layout), link->format); avfilter_unref_buffer(samplesref); } else - link->cur_buf = samplesref; + buf_out = samplesref; - pts = link->cur_buf->pts; - filter_samples(link, link->cur_buf); + link->cur_buf = buf_out; + pts = buf_out->pts; + filter_samples(link, buf_out); ff_update_link_current_pts(link, pts); } diff --git a/libavfilter/vf_fifo.c b/libavfilter/fifo.c index d9200d770a..da5aa648f6 100644 --- a/libavfilter/vf_fifo.c +++ b/libavfilter/fifo.c @@ -20,21 +20,22 @@ /** * @file - * FIFO buffering video filter + * FIFO buffering filter */ +#include "audio.h" #include "avfilter.h" #include "internal.h" #include "video.h" -typedef struct BufPic { - AVFilterBufferRef *picref; - struct BufPic *next; -} BufPic; +typedef struct Buf { + AVFilterBufferRef *buf; + struct Buf *next; +} Buf; typedef struct { - BufPic root; - BufPic *last; ///< last buffered picture + Buf root; + Buf *last; ///< last buffered frame } FifoContext; static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque) @@ -49,22 +50,22 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque) static av_cold void uninit(AVFilterContext *ctx) { FifoContext *fifo = ctx->priv; - BufPic *pic, *tmp; + Buf *buf, *tmp; - for (pic = fifo->root.next; pic; pic = tmp) { - tmp = pic->next; - avfilter_unref_buffer(pic->picref); - av_free(pic); + for (buf = fifo->root.next; buf; buf = tmp) { + tmp = buf->next; + avfilter_unref_buffer(buf->buf); + av_free(buf); } } -static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) +static void add_to_queue(AVFilterLink *inlink, AVFilterBufferRef *buf) { FifoContext *fifo = inlink->dst->priv; - fifo->last->next = av_mallocz(sizeof(BufPic)); + fifo->last->next = av_mallocz(sizeof(Buf)); fifo->last = fifo->last->next; - fifo->last->picref = picref; + fifo->last->buf = buf; } static void end_frame(AVFilterLink *inlink) { } @@ -74,19 +75,28 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) { } static int request_frame(AVFilterLink *outlink) { FifoContext *fifo = outlink->src->priv; - BufPic *tmp; + Buf *tmp; int ret; if (!fifo->root.next) { - if ((ret = avfilter_request_frame(outlink->src->inputs[0])) < 0) + if ((ret = ff_request_frame(outlink->src->inputs[0])) < 0) return ret; } /* by doing this, we give ownership of the reference to the next filter, * so we don't have to worry about dereferencing it ourselves. */ - ff_start_frame(outlink, fifo->root.next->picref); - ff_draw_slice (outlink, 0, outlink->h, 1); - ff_end_frame (outlink); + switch (outlink->type) { + case AVMEDIA_TYPE_VIDEO: + ff_start_frame(outlink, fifo->root.next->buf); + ff_draw_slice (outlink, 0, outlink->h, 1); + ff_end_frame (outlink); + break; + case AVMEDIA_TYPE_AUDIO: + ff_filter_samples(outlink, fifo->root.next->buf); + break; + default: + return AVERROR(EINVAL); + } if (fifo->last == fifo->root.next) fifo->last = &fifo->root; @@ -109,7 +119,7 @@ AVFilter avfilter_vf_fifo = { .inputs = (const AVFilterPad[]) {{ .name = "default", .type = AVMEDIA_TYPE_VIDEO, .get_video_buffer= ff_null_get_video_buffer, - .start_frame = start_frame, + .start_frame = add_to_queue, .draw_slice = draw_slice, .end_frame = end_frame, .rej_perms = AV_PERM_REUSE2, }, @@ -119,3 +129,24 @@ AVFilter avfilter_vf_fifo = { .request_frame = request_frame, }, { .name = NULL}}, }; + +AVFilter avfilter_af_afifo = { + .name = "afifo", + .description = NULL_IF_CONFIG_SMALL("Buffer input frames and send them when they are requested."), + + .init = init, + .uninit = uninit, + + .priv_size = sizeof(FifoContext), + + .inputs = (AVFilterPad[]) {{ .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_samples = add_to_queue, + .rej_perms = AV_PERM_REUSE2, }, + { .name = NULL}}, + .outputs = (AVFilterPad[]) {{ .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .request_frame = request_frame, }, + { .name = NULL}}, +}; diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c index e4b3c45c6b..6fad878566 100644 --- a/libavformat/cafdec.c +++ b/libavformat/cafdec.c @@ -410,5 +410,5 @@ AVInputFormat ff_caf_demuxer = { .read_header = read_header, .read_packet = read_packet, .read_seek = read_seek, - .codec_tag = (const AVCodecTag*[]){ ff_codec_caf_tags, 0 }, + .codec_tag = (const AVCodecTag* const []){ ff_codec_caf_tags, 0 }, }; diff --git a/libavformat/ivfdec.c b/libavformat/ivfdec.c index be1e2e9237..c0fdafbf02 100644 --- a/libavformat/ivfdec.c +++ b/libavformat/ivfdec.c @@ -87,5 +87,5 @@ AVInputFormat ff_ivf_demuxer = { .read_header = read_header, .read_packet = read_packet, .flags = AVFMT_GENERIC_INDEX, - .codec_tag = (const AVCodecTag*[]){ ff_codec_bmp_tags, 0 }, + .codec_tag = (const AVCodecTag* const []){ ff_codec_bmp_tags, 0 }, }; diff --git a/libavformat/version.h b/libavformat/version.h index 9a8b9aa130..6562061d6a 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,7 +30,7 @@ #include "libavutil/avutil.h" #define LIBAVFORMAT_VERSION_MAJOR 54 -#define LIBAVFORMAT_VERSION_MINOR 10 +#define LIBAVFORMAT_VERSION_MINOR 11 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ diff --git a/libavutil/avutil.h b/libavutil/avutil.h index 881942555f..b3f213a240 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -153,7 +153,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 51 -#define LIBAVUTIL_VERSION_MINOR 59 +#define LIBAVUTIL_VERSION_MINOR 60 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ |