[FFmpeg-cvslog] lavf/concatdec: add timestamp log
ffmpeg | branch: master | Stefano Sabatini | Tue Nov 18 10:36:16 2014 +0100| [484d42a0977e50fb66b8ac16eb32c63d2209be9e] | committer: Stefano Sabatini lavf/concatdec: add timestamp log Help debugging timestamp conversion issues. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=484d42a0977e50fb66b8ac16eb32c63d2209be9e --- libavformat/concatdec.c | 11 +++ 1 file changed, 11 insertions(+) diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index 2089883..a2584d7 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -23,6 +23,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/opt.h" #include "libavutil/parseutils.h" +#include "libavutil/timestamp.h" #include "avformat.h" #include "internal.h" #include "url.h" @@ -479,6 +480,7 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) int ret; int64_t delta; ConcatStream *cs; +AVStream *st; while (1) { ret = av_read_frame(cat->avf, pkt); @@ -504,6 +506,12 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) if ((ret = filter_packet(avf, cs, pkt))) return ret; +st = cat->avf->streams[pkt->stream_index]; +av_log(avf, AV_LOG_DEBUG, "file:%d stream:%d pts:%s pts_time:%s dts:%s dts_time:%s", + (unsigned)(cat->cur_file - cat->files), pkt->stream_index, + av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), + av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); + delta = av_rescale_q(cat->cur_file->start_time - cat->avf->start_time, AV_TIME_BASE_Q, cat->avf->streams[pkt->stream_index]->time_base); @@ -511,6 +519,9 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) pkt->pts += delta; if (pkt->dts != AV_NOPTS_VALUE) pkt->dts += delta; +av_log(avf, AV_LOG_DEBUG, " -> pts:%s pts_time:%s dts:%s dts_time:%s\n", + av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), + av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); return ret; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] ffmpeg: fix printed timestamp for droped frames
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 12:42:05 2014 +0100| [61fc1cbfbd82ebd4edf6866331280b3dfb06e7b1] | committer: Michael Niedermayer ffmpeg: fix printed timestamp for droped frames Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=61fc1cbfbd82ebd4edf6866331280b3dfb06e7b1 --- ffmpeg.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg.c b/ffmpeg.c index 30e379f..0f4b2aa 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -956,7 +956,7 @@ static void do_video_out(AVFormatContext *s, nb_frames_drop++; av_log(NULL, AV_LOG_VERBOSE, "*** dropping frame %d from stream %d at ts %"PRId64"\n", - ost->frame_number, ost->st->index, next_picture->pts); + ost->frame_number, ost->st->index, ost->last_frame->pts); } if (nb_frames > (nb0_frames && ost->last_droped) + (nb_frames > nb0_frames)) { if (nb_frames > dts_error_threshold * 30) { ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
Re: [FFmpeg-cvslog] doc/writing_filters: fix reference to Lenna image
On Tue, Nov 18, 2014 at 09:12:42PM +0100, Clément Bœsch wrote: > ffmpeg | branch: master | Clément Bœsch | Tue Nov 18 21:10:29 > 2014 +0100| [568f1ecccf5cd2a7e235198e6b6e38e2934e03e8] | committer: Clément > Bœsch > > doc/writing_filters: fix reference to Lenna image > > > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=568f1ecccf5cd2a7e235198e6b6e38e2934e03e8 > --- > > doc/writing_filters.txt |3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/doc/writing_filters.txt b/doc/writing_filters.txt > index 40935d2..7051f5e 100644 > --- a/doc/writing_filters.txt > +++ b/doc/writing_filters.txt > @@ -23,7 +23,8 @@ for others using the `./ffmpeg -v 0 -filters|grep ' V->V '` > command. > pattern of the other filters. > - ./configure ... > - make -j ffmpeg > - - ./ffmpeg -i tests/lena.pnm -vf foobar foobar.png > + - ./ffmpeg -i http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png -vf > foobar foobar.png > + Note here: you can obviously use a random local image instead of a remote > URL. why not http://samples.ffmpeg.org/image-samples/lena.pnm ? [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The worst form of inequality is to try to make unequal things equal. -- Aristotle signature.asc Description: Digital signature ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/tta: Use av_freep() to avoid leaving stale pointers in memory
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 13:42:46 2014 +0100| [b9792afad1c619f46f63ad4d977d6a2224bf4874] | committer: Michael Niedermayer avcodec/tta: Use av_freep() to avoid leaving stale pointers in memory Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b9792afad1c619f46f63ad4d977d6a2224bf4874 --- libavcodec/tta.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/tta.c b/libavcodec/tta.c index 5fdbac8..01584d9 100644 --- a/libavcodec/tta.c +++ b/libavcodec/tta.c @@ -394,7 +394,7 @@ static av_cold int tta_decode_close(AVCodecContext *avctx) { TTAContext *s = avctx->priv_data; if (s->bps < 3) -av_free(s->decode_buffer); +av_freep(&s->decode_buffer); s->decode_buffer = NULL; av_freep(&s->ch_ctx); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/truemotion2: Use av_freep() to avoid leaving stale pointers in memory
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 13:42:46 2014 +0100| [beec818d99e5951cd308ac64370639ad38ad9865] | committer: Michael Niedermayer avcodec/truemotion2: Use av_freep() to avoid leaving stale pointers in memory Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=beec818d99e5951cd308ac64370639ad38ad9865 --- libavcodec/truemotion2.c | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libavcodec/truemotion2.c b/libavcodec/truemotion2.c index 18d7c1e..d2aa3c6 100644 --- a/libavcodec/truemotion2.c +++ b/libavcodec/truemotion2.c @@ -996,14 +996,14 @@ static av_cold int decode_end(AVCodecContext *avctx) av_free(l->last); av_free(l->clast); for (i = 0; i < TM2_NUM_STREAMS; i++) -av_free(l->tokens[i]); +av_freep(&l->tokens[i]); if (l->Y1) { -av_free(l->Y1_base); -av_free(l->U1_base); -av_free(l->V1_base); -av_free(l->Y2_base); -av_free(l->U2_base); -av_free(l->V2_base); +av_freep(&l->Y1_base); +av_freep(&l->U1_base); +av_freep(&l->V1_base); +av_freep(&l->Y2_base); +av_freep(&l->U2_base); +av_freep(&l->V2_base); } av_freep(&l->buffer); l->buffer_size = 0; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/twinvq: Use av_freep() to avoid leaving stale pointers in memory
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 13:42:46 2014 +0100| [4ffec6d9331527f0d4bf265211e10f3298aaa977] | committer: Michael Niedermayer avcodec/twinvq: Use av_freep() to avoid leaving stale pointers in memory Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4ffec6d9331527f0d4bf265211e10f3298aaa977 --- libavcodec/twinvq.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/twinvq.c b/libavcodec/twinvq.c index f117220..b37fdee 100644 --- a/libavcodec/twinvq.c +++ b/libavcodec/twinvq.c @@ -755,13 +755,13 @@ av_cold int ff_twinvq_decode_close(AVCodecContext *avctx) for (i = 0; i < 3; i++) { ff_mdct_end(&tctx->mdct_ctx[i]); -av_free(tctx->cos_tabs[i]); +av_freep(&tctx->cos_tabs[i]); } -av_free(tctx->curr_frame); -av_free(tctx->spectrum); -av_free(tctx->prev_frame); -av_free(tctx->tmp_buf); +av_freep(&tctx->curr_frame); +av_freep(&tctx->spectrum); +av_freep(&tctx->prev_frame); +av_freep(&tctx->tmp_buf); return 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] ffmpeg: Use input packet duration in vfr/cfr code if available and valid
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 15:44:42 2014 +0100| [c5092025901b37aa5de4f290afb61fc5377eb79d] | committer: Michael Niedermayer ffmpeg: Use input packet duration in vfr/cfr code if available and valid Fixes Ticket3052 > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c5092025901b37aa5de4f290afb61fc5377eb79d --- ffmpeg.c|8 tests/ref/fate/gif-disposal-restore |1 + 2 files changed, 9 insertions(+) diff --git a/ffmpeg.c b/ffmpeg.c index 0f4b2aa..3b24cf9 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -893,6 +893,14 @@ static void do_video_out(AVFormatContext *s, if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num) duration = 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base)); +if (!ost->filters_script && +!ost->filters && +next_picture && +ist && +lrintf(av_frame_get_pkt_duration(next_picture) * av_q2d(ist->st->time_base) / av_q2d(enc->time_base)) > 0) { +duration = lrintf(av_frame_get_pkt_duration(next_picture) * av_q2d(ist->st->time_base) / av_q2d(enc->time_base)); +} + sync_ipts = next_picture->pts; delta0 = sync_ipts - ost->sync_opts; delta = delta0 + duration; diff --git a/tests/ref/fate/gif-disposal-restore b/tests/ref/fate/gif-disposal-restore index c5ebfcb..c0c04b4 100644 --- a/tests/ref/fate/gif-disposal-restore +++ b/tests/ref/fate/gif-disposal-restore @@ -1,3 +1,4 @@ #tb 0: 1/1 0, 0, 0,1, 112320, 0xb8afe429 +0, 0, 0,1, 112320, 0xae588a4b 0, 3, 3,1, 112320, 0xccdd27b7 ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] ffmpeg: Check duration for overlap and clip in fps cfr/vfr code
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 17:21:04 2014 +0100| [4e20e94921460f7108ad76dc873417cd15b356c4] | committer: Michael Niedermayer ffmpeg: Check duration for overlap and clip in fps cfr/vfr code Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4e20e94921460f7108ad76dc873417cd15b356c4 --- ffmpeg.c|7 +++ tests/ref/fate/gif-disposal-restore |2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ffmpeg.c b/ffmpeg.c index 3b24cf9..e51e789 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -904,6 +904,13 @@ static void do_video_out(AVFormatContext *s, sync_ipts = next_picture->pts; delta0 = sync_ipts - ost->sync_opts; delta = delta0 + duration; +if (delta0 < 0 && delta > 0) { +double cor = FFMIN(-delta0, duration); +av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0); +sync_ipts += cor; +duration -= cor; +delta0 += cor; +} /* by default, we output a single frame */ nb0_frames = 0; diff --git a/tests/ref/fate/gif-disposal-restore b/tests/ref/fate/gif-disposal-restore index c0c04b4..0ff1715 100644 --- a/tests/ref/fate/gif-disposal-restore +++ b/tests/ref/fate/gif-disposal-restore @@ -1,4 +1,4 @@ #tb 0: 1/1 0, 0, 0,1, 112320, 0xb8afe429 -0, 0, 0,1, 112320, 0xae588a4b +0, 1, 1,1, 112320, 0xae588a4b 0, 3, 3,1, 112320, 0xccdd27b7 ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] doc/writing_filters: use ffmpeg.org instead of wikimedia.org for lena image
ffmpeg | branch: master | Clément Bœsch | Wed Nov 19 19:54:48 2014 +0100| [de8cd93a05d1c1feb69e18998932430f6d4f941b] | committer: Clément Bœsch doc/writing_filters: use ffmpeg.org instead of wikimedia.org for lena image Less likely to change, and under our control. Thanks-to: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=de8cd93a05d1c1feb69e18998932430f6d4f941b --- doc/writing_filters.txt |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/writing_filters.txt b/doc/writing_filters.txt index 7051f5e..eb16d42 100644 --- a/doc/writing_filters.txt +++ b/doc/writing_filters.txt @@ -23,7 +23,7 @@ for others using the `./ffmpeg -v 0 -filters|grep ' V->V '` command. pattern of the other filters. - ./configure ... - make -j ffmpeg - - ./ffmpeg -i http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png -vf foobar foobar.png + - ./ffmpeg -i http://samples.ffmpeg.org/image-samples/lena.pnm -vf foobar foobar.png Note here: you can obviously use a random local image instead of a remote URL. If everything went right, you should get a foobar.png with Lena edge-detected. ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
Re: [FFmpeg-cvslog] doc/writing_filters: fix reference to Lenna image
On Wed, Nov 19, 2014 at 01:34:01PM +0100, Michael Niedermayer wrote: > On Tue, Nov 18, 2014 at 09:12:42PM +0100, Clément Bœsch wrote: > > ffmpeg | branch: master | Clément Bœsch | Tue Nov 18 21:10:29 > > 2014 +0100| [568f1ecccf5cd2a7e235198e6b6e38e2934e03e8] | committer: Clément > > Bœsch > > > > doc/writing_filters: fix reference to Lenna image > > > > > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=568f1ecccf5cd2a7e235198e6b6e38e2934e03e8 > > --- > > > > doc/writing_filters.txt |3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/doc/writing_filters.txt b/doc/writing_filters.txt > > index 40935d2..7051f5e 100644 > > --- a/doc/writing_filters.txt > > +++ b/doc/writing_filters.txt > > @@ -23,7 +23,8 @@ for others using the `./ffmpeg -v 0 -filters|grep ' V->V > > '` command. > > pattern of the other filters. > > - ./configure ... > > - make -j ffmpeg > > - - ./ffmpeg -i tests/lena.pnm -vf foobar foobar.png > > + - ./ffmpeg -i http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png -vf > > foobar foobar.png > > + Note here: you can obviously use a random local image instead of a > > remote URL. > > why not > http://samples.ffmpeg.org/image-samples/lena.pnm > ? > Good idea, changed. -- Clément B. pgpYoqlCHhTIz.pgp Description: PGP signature ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] ffmpeg: skip duration cliping for passthrough & drop modes
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 19:24:39 2014 +0100| [33bc81e437419d3e99c67826afdd0f4cf7621c0a] | committer: Michael Niedermayer ffmpeg: skip duration cliping for passthrough & drop modes Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=33bc81e437419d3e99c67826afdd0f4cf7621c0a --- ffmpeg.c | 18 +++--- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index e51e789..2586dcf 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -904,13 +904,6 @@ static void do_video_out(AVFormatContext *s, sync_ipts = next_picture->pts; delta0 = sync_ipts - ost->sync_opts; delta = delta0 + duration; -if (delta0 < 0 && delta > 0) { -double cor = FFMIN(-delta0, duration); -av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0); -sync_ipts += cor; -duration -= cor; -delta0 += cor; -} /* by default, we output a single frame */ nb0_frames = 0; @@ -933,6 +926,17 @@ static void do_video_out(AVFormatContext *s, } } +if (delta0 < 0 && +delta > 0 && +format_video_sync != VSYNC_PASSTHROUGH && +format_video_sync != VSYNC_DROP) { +double cor = FFMIN(-delta0, duration); +av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0); +sync_ipts += cor; +duration -= cor; +delta0 += cor; +} + switch (format_video_sync) { case VSYNC_VSCFR: if (ost->frame_number == 0 && delta - duration >= 0.5) { ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/avienc: factor frame skip code out
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 19:30:49 2014 +0100| [be44856483303d1af3cef1fc7a52db1fc0f49bd3] | committer: Michael Niedermayer avformat/avienc: factor frame skip code out Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=be44856483303d1af3cef1fc7a52db1fc0f49bd3 --- libavformat/avienc.c | 48 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/libavformat/avienc.c b/libavformat/avienc.c index e05e022..35f4d02 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -70,6 +70,8 @@ typedef struct { AVIIndex indexes; } AVIStream; +static int avi_write_packet(AVFormatContext *s, AVPacket *pkt); + static inline AVIIentry *avi_get_ientry(const AVIIndex *idx, int ent_id) { int cl = ent_id / AVI_INDEX_CLUSTER_SIZE; @@ -565,6 +567,32 @@ static int avi_write_idx1(AVFormatContext *s) return 0; } +static int write_skip_frames(AVFormatContext *s, int stream_index, int64_t dts) +{ +AVIStream *avist= s->streams[stream_index]->priv_data; +AVCodecContext *enc = s->streams[stream_index]->codec; + +av_dlog(s, "dts:%s packet_count:%d stream_index:%d\n", av_ts2str(dts), avist->packet_count, stream_index); +while (enc->block_align == 0 && dts != AV_NOPTS_VALUE && + dts > avist->packet_count && enc->codec_id != AV_CODEC_ID_XSUB && avist->packet_count) { +AVPacket empty_packet; + +if (dts - avist->packet_count > 6) { +av_log(s, AV_LOG_ERROR, "Too large number of skipped frames %"PRId64" > 6\n", dts - avist->packet_count); +return AVERROR(EINVAL); +} + +av_init_packet(&empty_packet); +empty_packet.size = 0; +empty_packet.data = NULL; +empty_packet.stream_index = stream_index; +avi_write_packet(s, &empty_packet); +av_dlog(s, "dup dts:%s packet_count:%d\n", av_ts2str(dts), avist->packet_count); +} + +return 0; +} + static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) { unsigned char tag[5]; @@ -575,29 +603,17 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) AVIOContext *pb = s->pb; AVIStream *avist= s->streams[stream_index]->priv_data; AVCodecContext *enc = s->streams[stream_index]->codec; +int ret; if (enc->codec_id == AV_CODEC_ID_H264 && enc->codec_tag == MKTAG('H','2','6','4') && pkt->size) { -int ret = ff_check_h264_startcode(s, s->streams[stream_index], pkt); +ret = ff_check_h264_startcode(s, s->streams[stream_index], pkt); if (ret < 0) return ret; } -av_dlog(s, "dts:%s packet_count:%d stream_index:%d\n", av_ts2str(pkt->dts), avist->packet_count, stream_index); -while (enc->block_align == 0 && pkt->dts != AV_NOPTS_VALUE && - pkt->dts > avist->packet_count && enc->codec_id != AV_CODEC_ID_XSUB && avist->packet_count) { -AVPacket empty_packet; -if (pkt->dts - avist->packet_count > 6) { -av_log(s, AV_LOG_ERROR, "Too large number of skipped frames %"PRId64" > 6\n", pkt->dts - avist->packet_count); -return AVERROR(EINVAL); -} +if ((ret = write_skip_frames(s, stream_index, pkt->dts)) < 0) +return ret; -av_init_packet(&empty_packet); -empty_packet.size = 0; -empty_packet.data = NULL; -empty_packet.stream_index = stream_index; -avi_write_packet(s, &empty_packet); -av_dlog(s, "dup dts:%s packet_count:%d\n", av_ts2str(pkt->dts), avist->packet_count); -} avist->packet_count++; // Make sure to put an OpenDML chunk when the file size exceeds the limits ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/avienc: write last frame duration
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 19:59:44 2014 +0100| [660a8b43abdbafd746e78184703ea29b774cb3ae] | committer: Michael Niedermayer avformat/avienc: write last frame duration Fixes small part of Ticket 3052 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=660a8b43abdbafd746e78184703ea29b774cb3ae --- libavformat/avienc.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/libavformat/avienc.c b/libavformat/avienc.c index 35f4d02..944c154 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -67,6 +67,8 @@ typedef struct { int entry; int max_size; +int64_t last_dts; + AVIIndex indexes; } AVIStream; @@ -614,6 +616,9 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) if ((ret = write_skip_frames(s, stream_index, pkt->dts)) < 0) return ret; +if (pkt->dts != AV_NOPTS_VALUE) +avist->last_dts = pkt->dts + pkt->duration; + avist->packet_count++; // Make sure to put an OpenDML chunk when the file size exceeds the limits @@ -677,6 +682,11 @@ static int avi_write_trailer(AVFormatContext *s) int i, j, n, nb_frames; int64_t file_size; +for (i = 0; i < s->nb_streams; i++) { +AVIStream *avist = s->streams[i]->priv_data; +write_skip_frames(s, i, avist->last_dts); +} + if (pb->seekable) { if (avi->riff_id == 1) { ff_end_tag(pb, avi->movi_list); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'f918b8a2933a65020cbe490ec637d5485c11a692'
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 20:24:06 2014 +0100| [f3dcabef33249b6e900edd9e601dbac0a8899876] | committer: Michael Niedermayer Merge commit 'f918b8a2933a65020cbe490ec637d5485c11a692' * commit 'f918b8a2933a65020cbe490ec637d5485c11a692': hdsenc: Use the right filename in an error message Merged-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f3dcabef33249b6e900edd9e601dbac0a8899876 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] hdsenc: Use the right filename in an error message
ffmpeg | branch: master | Martin Storsjö | Tue Nov 18 14:16:41 2014 +0200| [f918b8a2933a65020cbe490ec637d5485c11a692] | committer: Martin Storsjö hdsenc: Use the right filename in an error message Signed-off-by: Martin Storsjö > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f918b8a2933a65020cbe490ec637d5485c11a692 --- libavformat/hdsenc.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c index ae9275c..012de60 100644 --- a/libavformat/hdsenc.c +++ b/libavformat/hdsenc.c @@ -174,7 +174,7 @@ static int write_manifest(AVFormatContext *s, int final) ret = avio_open2(&out, temp_filename, AVIO_FLAG_WRITE, &s->interrupt_callback, NULL); if (ret < 0) { -av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", filename); +av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename); return ret; } avio_printf(out, "\n"); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] hdsenc: Clear the previous codec tag when setting up the chained muxer
ffmpeg | branch: master | Martin Storsjö | Tue Nov 18 14:28:50 2014 +0200| [7fd10f66b722eccc2ada9128766d002f6d751f79] | committer: Martin Storsjö hdsenc: Clear the previous codec tag when setting up the chained muxer The chained flv muxer wants one set of tags - normally this set could be signaled via the AVOutputFormat codec_tag field (as smoothstreamingenc and dashenc do). hdsenc doesn't signal it, since the FLV codec tag arrays aren't exported from flvenc.c. This can lead to the caller keeping an original codec tag from the originating container here, which would then be a mismatch for the FLV muxer. Since we don't really care about what codec tag the caller might have set, just clear it and let the lavf muxer layer set the right one for the chained FLV muxer later instead. Signed-off-by: Martin Storsjö > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7fd10f66b722eccc2ada9128766d002f6d751f79 --- libavformat/hdsenc.c |1 + 1 file changed, 1 insertion(+) diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c index 012de60..d96a3d5 100644 --- a/libavformat/hdsenc.c +++ b/libavformat/hdsenc.c @@ -395,6 +395,7 @@ static int hds_write_header(AVFormatContext *s) goto fail; } avcodec_copy_context(st->codec, s->streams[i]->codec); +st->codec->codec_tag = 0; st->sample_aspect_ratio = s->streams[i]->sample_aspect_ratio; st->time_base = s->streams[i]->time_base; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '7fd10f66b722eccc2ada9128766d002f6d751f79'
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 19 20:29:05 2014 +0100| [fbb6de2ad774880b5db08df476050e84fe3446bc] | committer: Michael Niedermayer Merge commit '7fd10f66b722eccc2ada9128766d002f6d751f79' * commit '7fd10f66b722eccc2ada9128766d002f6d751f79': hdsenc: Clear the previous codec tag when setting up the chained muxer Merged-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fbb6de2ad774880b5db08df476050e84fe3446bc --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/dtsdec: dts_probe: check reserved bit, check lfe, check sr_code similarity
ffmpeg | branch: master | Michael Niedermayer | Thu Nov 20 00:09:36 2014 +0100| [0dba982bb4f711447fcbb62d381d24f820c35084] | committer: Michael Niedermayer avformat/dtsdec: dts_probe: check reserved bit, check lfe, check sr_code similarity Fixes misdetection of s16le Fixes Ticket4109 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0dba982bb4f711447fcbb62d381d24f820c35084 --- libavformat/dtsdec.c | 23 +++ 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/libavformat/dtsdec.c b/libavformat/dtsdec.c index f6a939a..d054f43 100644 --- a/libavformat/dtsdec.c +++ b/libavformat/dtsdec.c @@ -34,7 +34,7 @@ static int dts_probe(AVProbeData *p) { const uint8_t *buf, *bufp; uint32_t state = -1; -int markers[4] = {0}; +int markers[4*16] = {0}; int sum, max, i; int64_t diff = 0; uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 }; @@ -43,6 +43,7 @@ static int dts_probe(AVProbeData *p) for(; buf < (p->buf+p->buf_size)-2; buf+=2) { int marker, sample_blocks, sample_rate, sr_code, framesize; +int lfe; GetBitContext gb; bufp = buf; @@ -89,13 +90,27 @@ static int dts_probe(AVProbeData *p) if (sample_rate == 0) continue; +get_bits(&gb, 5); +if (get_bits(&gb, 1)) +continue; + +skip_bits_long(&gb, 9); +lfe = get_bits(&gb, 2); +if (lfe > 2) +continue; + +marker += 4* sr_code; + markers[marker] ++; } -sum = markers[0] + markers[1] + markers[2] + markers[3]; -max = 0; -for (i=1; i<4; i++) + +sum = max = 0; +for (i=0; i 3 && p->buf_size / markers[max] < 32*1024 && markers[max] * 4 > sum * 3 && diff / p->buf_size > 200) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] swscale/x86/rgb2rgb_template: handle the first 2 lines with C in rgb24toyv12_*()
ffmpeg | branch: master | Michael Niedermayer | Thu Nov 20 00:43:45 2014 +0100| [4388e78a0f022c8572996f9ab568a39b5f716f9d] | committer: Michael Niedermayer swscale/x86/rgb2rgb_template: handle the first 2 lines with C in rgb24toyv12_*() This avoids out of array accesses Should fix Ticket3451 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4388e78a0f022c8572996f9ab568a39b5f716f9d --- libswscale/x86/rgb2rgb_template.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/libswscale/x86/rgb2rgb_template.c b/libswscale/x86/rgb2rgb_template.c index 3899d0a..7796d38 100644 --- a/libswscale/x86/rgb2rgb_template.c +++ b/libswscale/x86/rgb2rgb_template.c @@ -1634,6 +1634,16 @@ static inline void RENAME(rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_ #define BGR2V_IDX "16*4+16*34" int y; const x86_reg chromWidth= width>>1; + +if (height > 2) { +ff_rgb24toyv12_c(src, ydst, udst, vdst, width, 2, lumStride, chromStride, srcStride, rgb2yuv); +src += 2*srcStride; +ydst += 2*lumStride; +udst += chromStride; +vdst += chromStride; +height -= 2; +} + for (y=0; yhttp://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/dtsdec: dts_probe: check reserved bit, check lfe, check sr_code similarity
ffmpeg | branch: release/2.4 | Michael Niedermayer | Thu Nov 20 00:09:36 2014 +0100| [e5f5df37c8e1972fb5ac3262600dcf3a009242bf] | committer: Carl Eugen Hoyos avformat/dtsdec: dts_probe: check reserved bit, check lfe, check sr_code similarity Fixes misdetection of s16le Fixes Ticket4109 Signed-off-by: Michael Niedermayer (cherry picked from commit 0dba982bb4f711447fcbb62d381d24f820c35084) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e5f5df37c8e1972fb5ac3262600dcf3a009242bf --- libavformat/dtsdec.c | 23 +++ 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/libavformat/dtsdec.c b/libavformat/dtsdec.c index f6a939a..d054f43 100644 --- a/libavformat/dtsdec.c +++ b/libavformat/dtsdec.c @@ -34,7 +34,7 @@ static int dts_probe(AVProbeData *p) { const uint8_t *buf, *bufp; uint32_t state = -1; -int markers[4] = {0}; +int markers[4*16] = {0}; int sum, max, i; int64_t diff = 0; uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 }; @@ -43,6 +43,7 @@ static int dts_probe(AVProbeData *p) for(; buf < (p->buf+p->buf_size)-2; buf+=2) { int marker, sample_blocks, sample_rate, sr_code, framesize; +int lfe; GetBitContext gb; bufp = buf; @@ -89,13 +90,27 @@ static int dts_probe(AVProbeData *p) if (sample_rate == 0) continue; +get_bits(&gb, 5); +if (get_bits(&gb, 1)) +continue; + +skip_bits_long(&gb, 9); +lfe = get_bits(&gb, 2); +if (lfe > 2) +continue; + +marker += 4* sr_code; + markers[marker] ++; } -sum = markers[0] + markers[1] + markers[2] + markers[3]; -max = 0; -for (i=1; i<4; i++) + +sum = max = 0; +for (i=0; i 3 && p->buf_size / markers[max] < 32*1024 && markers[max] * 4 > sum * 3 && diff / p->buf_size > 200) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] swscale: support internal scaler cascades
ffmpeg | branch: release/2.4 | Michael Niedermayer | Wed Oct 8 02:05:54 2014 +0200| [633a2a082fc1b1b50a70992a181ff48db7acdab4] | committer: Carl Eugen Hoyos swscale: support internal scaler cascades Fixes Ticket3170 Signed-off-by: Michael Niedermayer (cherry picked from commit fba894615d694584057adb0ddb4d609486cad807) Conflicts: libswscale/version.h > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=633a2a082fc1b1b50a70992a181ff48db7acdab4 --- libswscale/swscale.c | 13 ++ libswscale/swscale_internal.h | 10 libswscale/utils.c| 54 - 3 files changed, 66 insertions(+), 11 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 59ead12..43b8740 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -27,6 +27,7 @@ #include "libavutil/avutil.h" #include "libavutil/bswap.h" #include "libavutil/cpu.h" +#include "libavutil/imgutils.h" #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "libavutil/pixdesc.h" @@ -899,6 +900,18 @@ int attribute_align_arg sws_scale(struct SwsContext *c, av_log(c, AV_LOG_ERROR, "One of the input parameters to sws_scale() is NULL, please check the calling code\n"); return 0; } +if (c->cascaded_context[0] && srcSliceY == 0 && srcSliceH == c->cascaded_context[0]->srcH) { +ret = sws_scale(c->cascaded_context[0], +srcSlice, srcStride, srcSliceY, srcSliceH, +c->cascaded_tmp, c->cascaded_tmpStride); +if (ret < 0) +return ret; +ret = sws_scale(c->cascaded_context[1], +(const uint8_t * const * )c->cascaded_tmp, c->cascaded_tmpStride, 0, c->cascaded_context[0]->dstH, +dst, dstStride); +return ret; +} + memcpy(src2, srcSlice, sizeof(src2)); memcpy(dst2, dst, sizeof(dst2)); diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 335e1f8..f693294 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -61,6 +61,8 @@ # define APCK_SIZE 16 #endif +#define RETCODE_USE_CASCADE -12345 + struct SwsContext; typedef enum SwsDither { @@ -301,6 +303,14 @@ typedef struct SwsContext { int sliceDir; ///< Direction that slices are fed to the scaler (1 = top-to-bottom, -1 = bottom-to-top). double param[2]; ///< Input parameters for scaling algorithms that need them. +/* The cascaded_* fields allow spliting a scaler task into multiple + * sequential steps, this is for example used to limit the maximum + * downscaling factor that needs to be supported in one scaler. + */ +struct SwsContext *cascaded_context[2]; +int cascaded_tmpStride[4]; +uint8_t *cascaded_tmp[4]; + uint32_t pal_yuv[256]; uint32_t pal_rgb[256]; diff --git a/libswscale/utils.c b/libswscale/utils.c index 5615700..01e056a 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -42,6 +42,7 @@ #include "libavutil/avutil.h" #include "libavutil/bswap.h" #include "libavutil/cpu.h" +#include "libavutil/imgutils.h" #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "libavutil/opt.h" @@ -582,8 +583,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t **filterPos, goto fail; if (filterSize >= MAX_FILTER_SIZE * 16 / ((flags & SWS_ACCURATE_RND) ? APCK_SIZE : 16)) { -av_log(NULL, AV_LOG_ERROR, "sws: filterSize %d is too large, try less extreme scaling or set --sws-max-filter-size and recompile\n", - FF_CEIL_RSHIFT((filterSize+1) * ((flags & SWS_ACCURATE_RND) ? APCK_SIZE : 16), 4)); +ret = RETCODE_USE_CASCADE; goto fail; } *outFilterSize = filterSize; @@ -675,7 +675,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t **filterPos, fail: if(ret < 0) -av_log(NULL, AV_LOG_ERROR, "sws: initFilter failed\n"); +av_log(NULL, ret == RETCODE_USE_CASCADE ? AV_LOG_DEBUG : AV_LOG_ERROR, "sws: initFilter failed\n"); av_free(filter); av_free(filter2); return ret; @@ -970,6 +970,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, enum AVPixelFormat dstFormat = c->dstFormat; const AVPixFmtDescriptor *desc_src; const AVPixFmtDescriptor *desc_dst; +int ret = 0; cpu_flags = av_get_cpu_flags(); flags = c->flags; @@ -1295,23 +1296,23 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, const int filterAlign = X86_MMX(cpu_flags) ? 4 : PPC_ALTIVEC(cpu_flags) ? 8 : 1; -if (initFilter(&c->hLumFilter, &c->hLumFilterPos, +if ((ret = initFilter(&c->hLumFilter, &c->hLumFilterPos, &c->hLumFilterSize, c->lumXInc,
[FFmpeg-cvslog] swscale/utils: support bayer input + scaling, and bayer input + any supported output
ffmpeg | branch: release/2.4 | Michael Niedermayer | Wed Nov 12 23:53:08 2014 +0100| [36317bf4554bc49e7750ea35556bf902940e] | committer: Carl Eugen Hoyos swscale/utils: support bayer input + scaling, and bayer input + any supported output Fixes Ticket4053 Signed-off-by: Michael Niedermayer (cherry picked from commit 2f6bb86f85886a7fb36e8a10e4dd8cc3a1849377) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=36317bf4554bc49e7750ea35556bf902940e --- libswscale/utils.c | 25 + 1 file changed, 25 insertions(+) diff --git a/libswscale/utils.c b/libswscale/utils.c index 01e056a..0c8a83a 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1228,6 +1228,31 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, } } +if (isBayer(srcFormat)) { +if (!unscaled || +(dstFormat != AV_PIX_FMT_RGB24 && dstFormat != AV_PIX_FMT_YUV420P)) { +enum AVPixelFormat tmpFormat = AV_PIX_FMT_RGB24; + +ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, +srcW, srcH, tmpFormat, 64); +if (ret < 0) +return ret; + +c->cascaded_context[0] = sws_getContext(srcW, srcH, srcFormat, +srcW, srcH, tmpFormat, +flags, srcFilter, NULL, c->param); +if (!c->cascaded_context[0]) +return -1; + +c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFormat, +dstW, dstH, dstFormat, +flags, NULL, dstFilter, c->param); +if (!c->cascaded_context[1]) +return -1; +return 0; +} +} + #define USE_MMAP (HAVE_MMAP && HAVE_MPROTECT && defined MAP_ANONYMOUS) /* precalculate horizontal scaler filter coefficients */ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] cinedec: report white balance gain coefficients using metadata
ffmpeg | branch: release/2.4 | Peter Ross | Sun Nov 9 12:05:41 2014 +1100| [e386241d54a0cc39b4513a4cfc250630c1d560ba] | committer: Carl Eugen Hoyos cinedec: report white balance gain coefficients using metadata Signed-off-by: Michael Niedermayer (cherry picked from commit 2093c1dc51ee1c08cb558759a1c59e6d1e3358a0) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e386241d54a0cc39b4513a4cfc250630c1d560ba --- libavformat/cinedec.c | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libavformat/cinedec.c b/libavformat/cinedec.c index 9eed006..0583ce0 100644 --- a/libavformat/cinedec.c +++ b/libavformat/cinedec.c @@ -27,6 +27,7 @@ #include "libavutil/intreadwrite.h" #include "libavcodec/bmp.h" +#include "libavutil/intfloat.h" #include "avformat.h" #include "internal.h" @@ -78,6 +79,16 @@ static int set_metadata_int(AVDictionary **dict, const char *key, int value, int return 0; } +static int set_metadata_float(AVDictionary **dict, const char *key, float value, int allow_zero) +{ +if (value != 0 || allow_zero) { +char tmp[64]; +snprintf(tmp, sizeof(tmp), "%f", value); +return av_dict_set(dict, key, tmp, 0); +} +return 0; +} + static int cine_read_header(AVFormatContext *avctx) { AVIOContext *pb = avctx->pb; @@ -177,7 +188,10 @@ static int cine_read_header(AVFormatContext *avctx) set_metadata_int(&st->metadata, "contrast", avio_rl32(pb), 1); set_metadata_int(&st->metadata, "gamma", avio_rl32(pb), 1); -avio_skip(pb, 72); // Reserved1 .. WBView +avio_skip(pb, 12 + 16); // Reserved1 .. AutoExpRect +set_metadata_float(&st->metadata, "wbgain[0].r", av_int2float(avio_rl32(pb)), 1); +set_metadata_float(&st->metadata, "wbgain[0].b", av_int2float(avio_rl32(pb)), 1); +avio_skip(pb, 36); // WBGain[1].. WBView st->codec->bits_per_coded_sample = avio_rl32(pb); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avfilter/vf_lut: gammaval709()
ffmpeg | branch: release/2.4 | Peter Ross | Fri Nov 14 09:14:24 2014 +1100| [057ee35924187979ae41f8c3f84fe16659a68656] | committer: Carl Eugen Hoyos avfilter/vf_lut: gammaval709() See http://www.itu.int/rec/R-REC-BT.709 Item 1.2, overall opto-electronic transfer characteristics at source Signed-off-by: Peter Ross Signed-off-by: Michael Niedermayer (cherry picked from commit b186b7131e160d7e3ea8ef4c52745b56ddcb287b) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=057ee35924187979ae41f8c3f84fe16659a68656 --- libavfilter/vf_lut.c | 17 + 1 file changed, 17 insertions(+) diff --git a/libavfilter/vf_lut.c b/libavfilter/vf_lut.c index fff5a2b..0b7a2ca 100644 --- a/libavfilter/vf_lut.c +++ b/libavfilter/vf_lut.c @@ -161,15 +161,32 @@ static double compute_gammaval(void *opaque, double gamma) return pow((val-minval)/(maxval-minval), gamma) * (maxval-minval)+minval; } +/** + * Compute Rec.709 gama correction of value val + */ +static double compute_gammaval709(void *opaque, double gamma) +{ +LutContext *s = opaque; +double val= s->var_values[VAR_CLIPVAL]; +double minval = s->var_values[VAR_MINVAL]; +double maxval = s->var_values[VAR_MAXVAL]; +double level = (val - minval) / (maxval - minval); +level = level < 0.018 ? 4.5 * level + : 1.099 * pow(level, 1.0 / gamma) - 0.099; +return level * (maxval - minval) + minval; +} + static double (* const funcs1[])(void *, double) = { (void *)clip, (void *)compute_gammaval, +(void *)compute_gammaval709, NULL }; static const char * const funcs1_names[] = { "clip", "gammaval", +"gammaval709", NULL }; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Changelog: add WebP muxer
ffmpeg | branch: master | Michael Niedermayer | Thu Nov 20 03:21:05 2014 +0100| [c661601f4583dbacf3dadbb48b3344f8188a49d6] | committer: Michael Niedermayer Changelog: add WebP muxer Suggested-by: jamrial Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c661601f4583dbacf3dadbb48b3344f8188a49d6 --- Changelog |2 ++ 1 file changed, 2 insertions(+) diff --git a/Changelog b/Changelog index 1777d6d..5f38aea 100644 --- a/Changelog +++ b/Changelog @@ -14,6 +14,8 @@ version : - AVFoundation screen capturing support - ffserver supports codec private options - creating DASH compatible fragmented MP4, MPEG-DASH segmenting muxer +- WebP muxer with animated WebP support + version 2.4: - Icecast protocol ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog