[FFmpeg-cvslog] fate: add a fate-filter-framepack rule
ffmpeg | branch: master | Clément Bœsch | Tue Dec 30 14:28:54 2014 +0100| [0c10cf6ab1aa9ee05b7c9a6074376a33d0c89206] | committer: Clément Bœsch fate: add a fate-filter-framepack rule > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0c10cf6ab1aa9ee05b7c9a6074376a33d0c89206 --- tests/fate/filter-video.mak |4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak index 601a0d8..1df3b63 100644 --- a/tests/fate/filter-video.mak +++ b/tests/fate/filter-video.mak @@ -55,12 +55,14 @@ FATE_FILTER_VSYNTH-$(call ALLYES, INTERLACE_FILTER FIELDORDER_FILTER) += fate-fi fate-filter-fieldorder: CMD = framecrc -c:v pgmyuv -i $(SRC) -vf interlace=tff,fieldorder=bff -sws_flags +accurate_rnd+bitexact define FATE_FPFILTER_SUITE -FATE_FILTER_VSYNTH-$(CONFIG_FRAMEPACK_FILTER) += fate-filter-framepack-$(1) +FATE_FILTER_FRAMEPACK += fate-filter-framepack-$(1) fate-filter-framepack-$(1): CMD = framecrc -c:v pgmyuv -i $(TARGET_PATH)/tests/vsynth1/%02d.pgm -c:v pgmyuv -i $(TARGET_PATH)/tests/vsynth1/%02d.pgm -filter_complex framepack=$(1) -frames 15 endef FPMODES = columns frameseq lines sbs tab $(foreach MODE,$(FPMODES),$(eval $(call FATE_FPFILTER_SUITE,$(MODE +FATE_FILTER_VSYNTH-$(CONFIG_FRAMEPACK_FILTER) += $(FATE_FILTER_FRAMEPACK) +fate-filter-framepack: $(FATE_FILTER_FRAMEPACK) FATE_FILTER_VSYNTH-$(CONFIG_GRADFUN_FILTER) += fate-filter-gradfun fate-filter-gradfun: CMD = framecrc -c:v pgmyuv -i $(SRC) -vf gradfun ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avfilter/framepack: use FF_CEIL_RSHIFT()
ffmpeg | branch: master | Clément Bœsch | Tue Dec 30 14:25:41 2014 +0100| [39e18b1f406376b824b258889fd96ff77fa4ac9a] | committer: Clément Bœsch avfilter/framepack: use FF_CEIL_RSHIFT() > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=39e18b1f406376b824b258889fd96ff77fa4ac9a --- libavfilter/vf_framepack.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavfilter/vf_framepack.c b/libavfilter/vf_framepack.c index 8a7d4e8..5087673 100644 --- a/libavfilter/vf_framepack.c +++ b/libavfilter/vf_framepack.c @@ -144,8 +144,8 @@ static void horizontal_frame_pack(FramepackContext *s, uint8_t *dstp = dst->data[plane]; if (plane == 1 || plane == 2) { -length = -(-(dst->width / 2) >> s->pix_desc->log2_chroma_w); -lines = -(-(dst->height)>> s->pix_desc->log2_chroma_h); +length = FF_CEIL_RSHIFT(dst->width / 2, s->pix_desc->log2_chroma_w); +lines = FF_CEIL_RSHIFT(dst->height, s->pix_desc->log2_chroma_h); } if (interleaved) { ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] swscale/x86/rgb2rgb_template: fix crash with tiny size and nv12 output
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Dec 3 20:21:56 2014 +0100| [56c5e009a184f1575a9477343c7a4a1387cfaeb1] | committer: Michael Niedermayer swscale/x86/rgb2rgb_template: fix crash with tiny size and nv12 output Fixes Ticket4151 Signed-off-by: Michael Niedermayer (cherry picked from commit 8524558858b7e14bc50afa10233e0194f591ab9d) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=56c5e009a184f1575a9477343c7a4a1387cfaeb1 --- libswscale/x86/rgb2rgb_template.c |1 + 1 file changed, 1 insertion(+) diff --git a/libswscale/x86/rgb2rgb_template.c b/libswscale/x86/rgb2rgb_template.c index 004621a..80e5670 100644 --- a/libswscale/x86/rgb2rgb_template.c +++ b/libswscale/x86/rgb2rgb_template.c @@ -1874,6 +1874,7 @@ static void RENAME(interleaveBytes)(const uint8_t *src1, const uint8_t *src2, ui for (h=0; h < height; h++) { int w; +if (width >= 16) #if COMPILE_TEMPLATE_SSE2 __asm__( "xor %%"REG_a", %%"REG_a" \n\t" ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/motion_est: use 2x8x8 for interlaced qpel
ffmpeg | branch: release/2.1 | Michael Niedermayer | Mon Dec 1 13:23:24 2014 +0100| [8240fa5701aacdbf63c1512f3cf54341be42733f] | committer: Michael Niedermayer avcodec/motion_est: use 2x8x8 for interlaced qpel Fixes out of array read Fixes Ticket4121 Signed-off-by: Michael Niedermayer (cherry picked from commit b50e003e1cb6a215df44ffa3354603bf600b4aa3) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8240fa5701aacdbf63c1512f3cf54341be42733f --- libavcodec/motion_est.c |8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index f4d217b..02aeb2e 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -189,7 +189,13 @@ static av_always_inline int cmp_inline(MpegEncContext *s, const int x, const int int uvdxy; /* no, it might not be used uninitialized */ if(dxy){ if(qpel){ -c->qpel_put[size][dxy](c->temp, ref[0] + x + y*stride, stride); //FIXME prototype (add h) +if (h << size == 16) { +c->qpel_put[size][dxy](c->temp, ref[0] + x + y*stride, stride); //FIXME prototype (add h) +} else if (size == 0 && h == 8) { +c->qpel_put[1][dxy](c->temp, ref[0] + x + y*stride , stride); +c->qpel_put[1][dxy](c->temp + 8, ref[0] + x + y*stride + 8, stride); +} else +av_assert2(0); if(chroma){ int cx= hx/2; int cy= hy/2; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/rmdec: Check codec_data_size
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Dec 3 20:01:18 2014 +0100| [80ba4b5d45368bb9f18c0a327b1a929f64b55784] | committer: Michael Niedermayer avformat/rmdec: Check codec_data_size Fixes infinite loop Fixes Ticket4154 Signed-off-by: Michael Niedermayer (cherry picked from commit a6f730730b82645a9d31aad0968487cb77d6946c) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=80ba4b5d45368bb9f18c0a327b1a929f64b55784 --- libavformat/rmdec.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index 73c9d0d..235ff13 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -308,6 +308,9 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb, int64_t codec_pos; int ret; +if (codec_data_size < 0) +return AVERROR_INVALIDDATA; + avpriv_set_pts_info(st, 64, 1, 1000); codec_pos = avio_tell(pb); v = avio_rb32(pb); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] fix Makefile objects for pulseaudio support
ffmpeg | branch: release/2.1 | Michael Stypa | Fri Nov 28 15:54:50 2014 +0100| [bf5df31b4f922666c1e8d3533dafdf53744f89a9] | committer: Michael Niedermayer fix Makefile objects for pulseaudio support Signed-off-by: Michael Niedermayer (cherry picked from commit cb58c771ade66afcc623250e1c7ac8191381d991) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bf5df31b4f922666c1e8d3533dafdf53744f89a9 --- libavdevice/Makefile |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavdevice/Makefile b/libavdevice/Makefile index 21ca954..bc7cb83 100644 --- a/libavdevice/Makefile +++ b/libavdevice/Makefile @@ -34,7 +34,7 @@ OBJS-$(CONFIG_OPENAL_INDEV) += openal-dec.o OBJS-$(CONFIG_OSS_INDEV) += oss_audio.o OBJS-$(CONFIG_OSS_OUTDEV)+= oss_audio.o OBJS-$(CONFIG_PULSE_INDEV) += pulse_audio_dec.o \ -pulse_audio_common.o +pulse_audio_common.o timefilter.o OBJS-$(CONFIG_PULSE_OUTDEV) += pulse_audio_enc.o \ pulse_audio_common.o OBJS-$(CONFIG_SDL_OUTDEV)+= sdl.o ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/h264: Clear delayed_pic on deallocation
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Dec 17 21:27:37 2014 +0100| [84bc2cea237725de468f53dbba6d53140fae21c5] | committer: Michael Niedermayer avcodec/h264: Clear delayed_pic on deallocation Fixes use of freed memory Fixes: case5_av_frame_copy_props.mp4 Found-by: Michal Zalewski Signed-off-by: Michael Niedermayer (cherry picked from commit e8714f6f93d1a32f4e4655209960afcf4c185214) Conflicts: libavcodec/h264.c > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=84bc2cea237725de468f53dbba6d53140fae21c5 --- libavcodec/h264.c |1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 7ea833f..1194fd9 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -1231,6 +1231,7 @@ static void free_tables(H264Context *h, int free_rbsp) av_buffer_pool_uninit(&h->ref_index_pool); if (free_rbsp && h->DPB) { +memset(h->delayed_pic, 0, sizeof(h->delayed_pic)); for (i = 0; i < MAX_PICTURE_COUNT; i++) unref_picture(h, &h->DPB[i]); av_freep(&h->DPB); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] lavu/frame: fix malloc error path in av_frame_copy_props()
ffmpeg | branch: release/2.1 | wm4 | Mon Dec 15 04:32:58 2014 +0100| [df1ea139b4fbf98351ebb23dad748e8f74002616] | committer: Michael Niedermayer lavu/frame: fix malloc error path in av_frame_copy_props() The error path frees all side data, but forgets to reset the side data count. This can blow up later in av_frame_unref() and free_side_data(). Signed-off-by: Michael Niedermayer (cherry picked from commit a400edbb6d00c0211de38e4f1b4f593681db91d8) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=df1ea139b4fbf98351ebb23dad748e8f74002616 --- libavutil/frame.c |1 + 1 file changed, 1 insertion(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index 654f174..774413f 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -489,6 +489,7 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src) av_dict_free(&dst->side_data[i]->metadata); } av_freep(&dst->side_data); +dst->nb_side_data = 0; return AVERROR(ENOMEM); } memcpy(sd_dst->data, sd_src->data, sd_src->size); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] lavf/segment: remove duplicated and inconsistent cleanup code in seg_write_packet()
ffmpeg | branch: release/2.1 | Stefano Sabatini | Tue Jan 21 19:58:41 2014 +0100| [67e2394cc68eea02c3789c8a097c5e2906bac5d2] | committer: Michael Niedermayer lavf/segment: remove duplicated and inconsistent cleanup code in seg_write_packet() In particular, avoid to leave around the seg->avf pointer to freed structure, and fix crash with: ffmpeg -f lavfi -i testsrc -c:v h264 -map 0 -f segment foo-%d.ts (cherry picked from commit 169065fbfb3da1ab776379c333aebc54bb1f1bc4) Found-by: Qinghao Tang Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=67e2394cc68eea02c3789c8a097c5e2906bac5d2 --- libavformat/segment.c |6 -- 1 file changed, 6 deletions(-) diff --git a/libavformat/segment.c b/libavformat/segment.c index dca7822..ce4af8b 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -710,12 +710,6 @@ fail: if (pkt->stream_index == seg->reference_stream_index) seg->frame_count++; -if (ret < 0) { -if (seg->list) -avio_close(seg->list_pb); -avformat_free_context(oc); -} - return ret; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/aviobuf: Check that avio_seek() target is non negative
ffmpeg | branch: release/2.1 | Michael Niedermayer | Sun Dec 14 17:26:11 2014 +0100| [844f7f78aa523fb452c0271cb7dc6742039b9d3c] | committer: Michael Niedermayer avformat/aviobuf: Check that avio_seek() target is non negative Fixes out of array access Suggested-by: Andrew Scherkus Signed-off-by: Michael Niedermayer (cherry picked from commit ed86dbd05d61363dc1c0d33f3267e2177c985fdd) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=844f7f78aa523fb452c0271cb7dc6742039b9d3c --- libavformat/aviobuf.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 8218078..87ad388 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -217,6 +217,9 @@ int64_t avio_seek(AVIOContext *s, int64_t offset, int whence) return offset1; offset += offset1; } +if (offset < 0) +return AVERROR(EINVAL); + offset1 = offset - pos; if (!s->must_flush && (!s->direct || !s->seek) && offset1 >= 0 && offset1 <= (s->buf_end - s->buffer)) { ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/hevc_ps: Check diff_cu_qp_delta_depth
ffmpeg | branch: release/2.1 | Michael Niedermayer | Thu Dec 18 02:09:23 2014 +0100| [7bd8ea83a0ba91c9b637536df3438487db001b17] | committer: Michael Niedermayer avcodec/hevc_ps: Check diff_cu_qp_delta_depth Fixes undefined behavior Fixes: asan_static-oob_17aa046_582_cov_1577759978_DBLK_G_VIXS_1.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 3281fa892599d71b4dc298a426af8296419cd90e) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7bd8ea83a0ba91c9b637536df3438487db001b17 --- libavcodec/hevc_ps.c |8 1 file changed, 8 insertions(+) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index ff881ea..461bf34 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -1049,6 +1049,14 @@ int ff_hevc_decode_nal_pps(HEVCContext *s) if (pps->cu_qp_delta_enabled_flag) pps->diff_cu_qp_delta_depth = get_ue_golomb_long(gb); +if (pps->diff_cu_qp_delta_depth < 0 || +pps->diff_cu_qp_delta_depth > sps->log2_diff_max_min_coding_block_size) { +av_log(s->avctx, AV_LOG_ERROR, "diff_cu_qp_delta_depth %d is invalid\n", + pps->diff_cu_qp_delta_depth); +ret = AVERROR_INVALIDDATA; +goto err; +} + pps->cb_qp_offset = get_se_golomb(gb); if (pps->cb_qp_offset < -12 || pps->cb_qp_offset > 12) { av_log(s->avctx, AV_LOG_ERROR, "pps_cb_qp_offset out of range: %d\n", ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] jvdec: check frame dimensions
ffmpeg | branch: release/2.1 | Anton Khirnov | Sun Dec 14 21:01:59 2014 +0100| [01c83f4cb197ba9e2317ea4e4ade4cf46e138113] | committer: Michael Niedermayer jvdec: check frame dimensions The frame size must be set by the caller and each dimension must be a multiple of 8. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer See: 105654e376a736d243aef4a1d121abebce912e6b These should be redundant, but are backported for saftey anyway (cherry picked from commit e012cb8dea7969c7b3927dbf846ef2742cd4a7ab) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=01c83f4cb197ba9e2317ea4e4ade4cf46e138113 --- libavcodec/jvdec.c |7 +++ 1 file changed, 7 insertions(+) diff --git a/libavcodec/jvdec.c b/libavcodec/jvdec.c index cad0532..7c0a42b 100644 --- a/libavcodec/jvdec.c +++ b/libavcodec/jvdec.c @@ -42,6 +42,13 @@ static av_cold int decode_init(AVCodecContext *avctx) { JvContext *s = avctx->priv_data; +if (!avctx->width || !avctx->height || +(avctx->width & 7) || (avctx->height & 7)) { +av_log(avctx, AV_LOG_ERROR, "Invalid video dimensions: %dx%d\n", + avctx->width, avctx->height); +return AVERROR(EINVAL); +} + s->frame = av_frame_alloc(); if (!s->frame) return AVERROR(ENOMEM); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/indeo3: ensure offsets are non negative
ffmpeg | branch: release/2.1 | Michael Niedermayer | Thu Dec 18 18:57:27 2014 +0100| [d3853ad11f216cb57edf7b1f2bfbc49449fb8f65] | committer: Michael Niedermayer avcodec/indeo3: ensure offsets are non negative Signed-off-by: Michael Niedermayer (cherry picked from commit 368642361f3a589d7b0c23ea327d988edb434e3f) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d3853ad11f216cb57edf7b1f2bfbc49449fb8f65 --- libavcodec/indeo3.c |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c index ea8e4d8..b6633f8 100644 --- a/libavcodec/indeo3.c +++ b/libavcodec/indeo3.c @@ -981,7 +981,8 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx, ctx->y_data_size = ends[0] - starts[0]; ctx->v_data_size = ends[1] - starts[1]; ctx->u_data_size = ends[2] - starts[2]; -if (FFMAX3(y_offset, v_offset, u_offset) >= ctx->data_size - 16 || +if (FFMIN3(y_offset, v_offset, u_offset) < 0 || +FFMAX3(y_offset, v_offset, u_offset) >= ctx->data_size - 16 || FFMIN3(y_offset, v_offset, u_offset) < gb.buffer - bs_hdr + 16 || FFMIN3(ctx->y_data_size, ctx->v_data_size, ctx->u_data_size) <= 0) { av_log(avctx, AV_LOG_ERROR, "One of the y/u/v offsets is invalid\n"); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/mov: Fix memleaks for duplicate STCO/CO64/STSC atoms
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Nov 26 18:16:15 2014 +0100| [a736171b69b0a05acbb463fdbbc6114305c7c99b] | committer: Michael Niedermayer avformat/mov: Fix memleaks for duplicate STCO/CO64/STSC atoms Also see [FFmpeg-devel] [PATCH] avformat/mov: strengthen some table allocations which contains more fixes but is unfinished Fixes: signal_sigabrt_76ac7bb9_3484_cov_183177_starfox2.mov Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 1b5d11240692025f036e945bc37968735679320a) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a736171b69b0a05acbb463fdbbc6114305c7c99b --- libavformat/mov.c |8 1 file changed, 8 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 407c590..b089372 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1193,6 +1193,10 @@ static int mov_read_stco(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (entries >= UINT_MAX/sizeof(int64_t)) return AVERROR_INVALIDDATA; +if (sc->chunk_offsets) +av_log(c->fc, AV_LOG_WARNING, "Duplicate STCO atom\n"); +av_free(sc->chunk_offsets); +sc->chunk_count = 0; sc->chunk_offsets = av_malloc(entries * sizeof(int64_t)); if (!sc->chunk_offsets) return AVERROR(ENOMEM); @@ -1709,6 +1713,10 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; if (entries >= UINT_MAX / sizeof(*sc->stsc_data)) return AVERROR_INVALIDDATA; +if (sc->stsc_data) +av_log(c->fc, AV_LOG_WARNING, "Duplicate STSC atom\n"); +av_free(sc->stsc_data); +sc->stsc_count = 0; sc->stsc_data = av_malloc(entries * sizeof(*sc->stsc_data)); if (!sc->stsc_data) return AVERROR(ENOMEM); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] mmvideo: check frame dimensions
ffmpeg | branch: release/2.1 | Anton Khirnov | Sun Dec 14 21:01:59 2014 +0100| [823a9177a3ea14bbce2cb6ae97435918953e2d3b] | committer: Michael Niedermayer mmvideo: check frame dimensions The frame size must be set by the caller and each dimension must be a multiple of 2. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer See: 8b0e96e1f21b761ca15dbb470cd619a1ebf86c3e These should be redundant, but are backported for saftey anyway (cherry picked from commit b0273232d8fffdc8a977ccdad460b8071a0e353c) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=823a9177a3ea14bbce2cb6ae97435918953e2d3b --- libavcodec/mmvideo.c |7 +++ 1 file changed, 7 insertions(+) diff --git a/libavcodec/mmvideo.c b/libavcodec/mmvideo.c index 1150485..2225126 100644 --- a/libavcodec/mmvideo.c +++ b/libavcodec/mmvideo.c @@ -61,6 +61,13 @@ static av_cold int mm_decode_init(AVCodecContext *avctx) avctx->pix_fmt = AV_PIX_FMT_PAL8; +if (!avctx->width || !avctx->height || +(avctx->width & 1) || (avctx->height & 1)) { +av_log(avctx, AV_LOG_ERROR, "Invalid video dimensions: %dx%d\n", + avctx->width, avctx->height); +return AVERROR(EINVAL); +} + s->frame = av_frame_alloc(); if (!s->frame) return AVERROR(ENOMEM); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: create the tests directory like the doc directory
ffmpeg | branch: release/2.1 | Michael Niedermayer | Mon Dec 15 04:32:23 2014 +0100| [b4c4f9dba613b654cd19630d7a846b81844f8778] | committer: Michael Niedermayer configure: create the tests directory like the doc directory This fixes an issue where the tests directory is not created for out of tree builds before its needed Tested-by: Dave Yeo Signed-off-by: Michael Niedermayer (cherry picked from commit e631872f13b6be0583603d45a11e53319754bc8d) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b4c4f9dba613b654cd19630d7a846b81844f8778 --- configure |1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index 08777a7..54a1065 100755 --- a/configure +++ b/configure @@ -4938,6 +4938,7 @@ enabled getenv || echo "#define getenv(x) NULL" >> $TMPH mkdir -p doc +mkdir -p tests echo "@c auto-generated by configure" > doc/config.texi print_config ARCH_ "$config_files" $ARCH_LIST ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] swresample/soxr_resample: fix error handling
ffmpeg | branch: release/2.1 | Rob Sykes | Sat Dec 13 21:12:56 2014 +0100| [059762d9da0830176ea2cbfabf49cadeb28b61c8] | committer: Michael Niedermayer swresample/soxr_resample: fix error handling Fixes CID1257659 Signed-off-by: Michael Niedermayer (cherry picked from commit 4b6f2253741f3023928e61ae5105ccd4b1c515fb) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=059762d9da0830176ea2cbfabf49cadeb28b61c8 --- libswresample/soxr_resample.c |8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libswresample/soxr_resample.c b/libswresample/soxr_resample.c index 4c000db..7467f8d 100644 --- a/libswresample/soxr_resample.c +++ b/libswresample/soxr_resample.c @@ -76,8 +76,12 @@ static int process( AudioData *src, int src_size, int *consumed){ size_t idone, odone; soxr_error_t error = soxr_set_error((soxr_t)c, soxr_set_num_channels((soxr_t)c, src->ch_count)); -error = soxr_process((soxr_t)c, src->ch, (size_t)src_size, -&idone, dst->ch, (size_t)dst_size, &odone); +if (!error) +error = soxr_process((soxr_t)c, src->ch, (size_t)src_size, + &idone, dst->ch, (size_t)dst_size, &odone); +else +idone = 0; + *consumed = (int)idone; return error? -1 : odone; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/vmdvideo: Check len before using it in method 3
ffmpeg | branch: release/2.1 | Michael Niedermayer | Tue Dec 16 16:24:55 2014 +0100| [96981b092c0971ac4c572692141cda87f5371989] | committer: Michael Niedermayer avcodec/vmdvideo: Check len before using it in method 3 Fixes out of array access Fixes: asan_heap-oob_4d23ba_91_cov_3853393937_128.vmd Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 3030fb7e0d41836f8add6399e9a7c7b740b48bfd) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=96981b092c0971ac4c572692141cda87f5371989 --- libavcodec/vmdav.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/vmdav.c b/libavcodec/vmdav.c index 36d60ee..8710f33 100644 --- a/libavcodec/vmdav.c +++ b/libavcodec/vmdav.c @@ -348,6 +348,9 @@ static int vmd_decode(VmdVideoContext *s, AVFrame *frame) ofs += slen; bytestream2_skip(&gb, len); } else { +if (ofs + len > frame_width || +bytestream2_get_bytes_left(&gb) < len) +return AVERROR_INVALIDDATA; bytestream2_get_buffer(&gb, &dp[ofs], len); ofs += len; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/mov: check atom nesting depth
ffmpeg | branch: release/2.1 | Michael Niedermayer | Tue Dec 16 21:14:40 2014 +0100| [07a37001a32339a72a8e45ff4f65072b3e506a2c] | committer: Michael Niedermayer avformat/mov: check atom nesting depth Fixes call stack overflow Fixes: case1_call_stack_overflow.mp4 Found-by: Michal Zalewski Signed-off-by: Michael Niedermayer (cherry picked from commit caa7a3914f499f74b3ee346f26d598ebdc0ec210) Conflicts: libavformat/isom.h Conflicts: libavformat/isom.h > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=07a37001a32339a72a8e45ff4f65072b3e506a2c --- libavformat/isom.h |1 + libavformat/mov.c | 13 - 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libavformat/isom.h b/libavformat/isom.h index 828e500..9fc30d4 100644 --- a/libavformat/isom.h +++ b/libavformat/isom.h @@ -164,6 +164,7 @@ typedef struct MOVContext { int64_t next_root_atom; ///< offset of the next root atom int *bitrates; ///< bitrates read before streams creation int bitrates_count; +int atom_depth; } MOVContext; int ff_mp4_read_descr_len(AVIOContext *pb); diff --git a/libavformat/mov.c b/libavformat/mov.c index d19aa16..407c590 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2984,6 +2984,12 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVAtom a; int i; +if (c->atom_depth > 10) { +av_log(c->fc, AV_LOG_ERROR, "Atoms too deeply nested\n"); +return AVERROR_INVALIDDATA; +} +c->atom_depth ++; + if (atom.size < 0) atom.size = INT64_MAX; while (total_size + 8 <= atom.size && !url_feof(pb)) { @@ -3000,6 +3006,7 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) { av_log(c->fc, AV_LOG_ERROR, "Broken file, trak/mdat not at top-level\n"); avio_skip(pb, -8); +c->atom_depth --; return 0; } } @@ -3036,13 +3043,16 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) int64_t start_pos = avio_tell(pb); int64_t left; int err = parse(c, pb, a); -if (err < 0) +if (err < 0) { +c->atom_depth --; return err; +} if (c->found_moov && c->found_mdat && ((!pb->seekable || c->fc->flags & AVFMT_FLAG_IGNIDX) || start_pos + a.size == avio_size(pb))) { if (!pb->seekable || c->fc->flags & AVFMT_FLAG_IGNIDX) c->next_root_atom = start_pos + a.size; +c->atom_depth --; return 0; } left = a.size - avio_tell(pb) + start_pos; @@ -3062,6 +3072,7 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (total_size < atom.size && atom.size < 0x7) avio_skip(pb, atom.size - total_size); +c->atom_depth --; return 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/h264: make the first field of H264Context an AVClass
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Dec 17 01:31:48 2014 +0100| [ac499d8142f38f0f82aa06a4cf425498ee19c32f] | committer: Michael Niedermayer avcodec/h264: make the first field of H264Context an AVClass Fixes use of freed memory Fixes: asan_heap-uaf_3660f67_757_cov_1257014655_Hi422FR1_SONY_A.jsv Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit f3b5b139ad853b6f69c6a0b036815a60e7b3f261) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ac499d8142f38f0f82aa06a4cf425498ee19c32f --- libavcodec/h264.h |1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 872d09d..bc7db9f 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -284,6 +284,7 @@ typedef struct MMCO { * H264Context */ typedef struct H264Context { +AVClass *av_class; AVCodecContext *avctx; VideoDSPContext vdsp; H264DSPContext h264dsp; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/indeo3: use signed variables to avoid underflow
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Dec 17 03:14:21 2014 +0100| [35819400e7821a8acbd11cb5c537cd84601e077b] | committer: Michael Niedermayer avcodec/indeo3: use signed variables to avoid underflow Fixes out of array read Fixes: signal_sigsegv_1b0a4da_1865_cov_2167818389_computer_anger.avi Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 3305acdc92fa37869f160a11a87741c8a0de0454) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=35819400e7821a8acbd11cb5c537cd84601e077b --- libavcodec/indeo3.c |5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c index b882763..ea8e4d8 100644 --- a/libavcodec/indeo3.c +++ b/libavcodec/indeo3.c @@ -94,7 +94,7 @@ typedef struct Indeo3DecodeContext { int16_t width, height; uint32_tframe_num; ///< current frame number (zero-based) -uint32_tdata_size; ///< size of the frame data in bytes +int data_size; ///< size of the frame data in bytes uint16_tframe_flags;///< frame properties uint8_t cb_offset; ///< needed for selecting VQ tables uint8_t buf_sel;///< active frame buffer: 0 - primary, 1 -secondary @@ -899,7 +899,8 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx, GetByteContext gb; const uint8_t *bs_hdr; uint32_tframe_num, word2, check_sum, data_size; -uint32_ty_offset, u_offset, v_offset, starts[3], ends[3]; +int y_offset, u_offset, v_offset; +uint32_tstarts[3], ends[3]; uint16_theight, width; int i, j; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] swscale: increase yuv2rgb table headroom
ffmpeg | branch: release/2.1 | Michael Niedermayer | Tue Dec 16 22:21:21 2014 +0100| [9354c47d2ec9133cbb7fd82dc049f6eba07fc154] | committer: Michael Niedermayer swscale: increase yuv2rgb table headroom Fixes out of array access Fixes: case2_bad_read_yuv2rgbx32.mp4 Found-by: Michal Zalewski Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9354c47d2ec9133cbb7fd82dc049f6eba07fc154 --- libswscale/swscale_internal.h |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 33fdfc2..c9f6a06 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -37,7 +37,7 @@ #define STR(s) AV_TOSTRING(s) // AV_STRINGIFY is too long -#define YUVRGB_TABLE_HEADROOM 128 +#define YUVRGB_TABLE_HEADROOM 256 #define MAX_FILTER_SIZE 256 ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/hevc: clear filter_slice_edges() on allocation
ffmpeg | branch: release/2.1 | Michael Niedermayer | Wed Dec 17 19:42:57 2014 +0100| [9dc6a7f13a23110c04568e890ef340f014c23303] | committer: Michael Niedermayer avcodec/hevc: clear filter_slice_edges() on allocation This avoids use of uninitialized memory Fixes: asan_static-oob_17aa046_582_cov_212287884_DBLK_G_VIXS_1.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 8aa8d12554868c32436750f881954193087219c8) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9dc6a7f13a23110c04568e890ef340f014c23303 --- libavcodec/hevc.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c index 9633511..bdfc131 100644 --- a/libavcodec/hevc.c +++ b/libavcodec/hevc.c @@ -115,7 +115,7 @@ static int pic_arrays_init(HEVCContext *s) if (!s->tab_ipm || !s->cbf_luma || !s->is_pcm) goto fail; -s->filter_slice_edges = av_malloc(ctb_count); +s->filter_slice_edges = av_mallocz(ctb_count); s->tab_slice_address = av_malloc_array(pic_size_in_ctb, sizeof(*s->tab_slice_address)); s->qp_y_tab = av_malloc_array(pic_size_in_ctb, ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/utvideodec: Fix handling of slice_height=0
ffmpeg | branch: release/2.1 | Michael Niedermayer | Tue Dec 16 20:45:31 2014 +0100| [ba99e90357c97f7845f1d463f73d9a4a7e77d78a] | committer: Michael Niedermayer avcodec/utvideodec: Fix handling of slice_height=0 Fixes out of array accesses Fixes: asan_heap-oob_25bcd7e_3783_cov_3553517262_utvideo_rgba_median.avi Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 3881606240953b9275a247a1c98a567f3c44890f) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ba99e90357c97f7845f1d463f73d9a4a7e77d78a --- libavcodec/utvideodec.c |4 1 file changed, 4 insertions(+) diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c index ff69a25..05db962 100644 --- a/libavcodec/utvideodec.c +++ b/libavcodec/utvideodec.c @@ -212,6 +212,8 @@ static void restore_median(uint8_t *src, int step, int stride, slice_height = slice + 1) * height) / slices) & cmask) - slice_start; +if (!slice_height) +continue; bsrc = src + slice_start * stride; // first line - left neighbour prediction @@ -267,6 +269,8 @@ static void restore_median_il(uint8_t *src, int step, int stride, slice_height = slice + 1) * height) / slices) & cmask) - slice_start; slice_height >>= 1; +if (!slice_height) +continue; bsrc = src + slice_start * stride; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/h264: Check *log2_weight_denom
ffmpeg | branch: release/2.1 | Michael Niedermayer | Thu Dec 18 03:16:39 2014 +0100| [b188ff5e183de064eb1eeb95fd88a0a74a747a8c] | committer: Michael Niedermayer avcodec/h264: Check *log2_weight_denom Fixes undefined behavior Fixes: signal_sigsegv_14768d2_2248_cov_3629497219_h264_h264___pi_20070614T182942.h264 Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit 61296d41e2de3b41304339e4631dd44c2e15f805) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b188ff5e183de064eb1eeb95fd88a0a74a747a8c --- libavcodec/h264.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 1194fd9..450aa36 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2641,6 +2641,16 @@ int ff_pred_weight_table(H264Context *h) h->luma_log2_weight_denom = get_ue_golomb(&h->gb); if (h->sps.chroma_format_idc) h->chroma_log2_weight_denom = get_ue_golomb(&h->gb); + +if (h->luma_log2_weight_denom > 7U) { +av_log(h->avctx, AV_LOG_ERROR, "luma_log2_weight_denom %d is out of range\n", h->luma_log2_weight_denom); +h->luma_log2_weight_denom = 0; +} +if (h->chroma_log2_weight_denom > 7U) { +av_log(h->avctx, AV_LOG_ERROR, "chroma_log2_weight_denom %d is out of range\n", h->chroma_log2_weight_denom); +h->chroma_log2_weight_denom = 0; +} + luma_def = 1 << h->luma_log2_weight_denom; chroma_def = 1 << h->chroma_log2_weight_denom; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/matroskadec: fix handling of recursive SeekHead elements
ffmpeg | branch: release/2.1 | wm4 | Sat Dec 6 16:53:30 2014 +0100| [68b6a5efbfd530e705a4b1e91da38f1350406264] | committer: Michael Niedermayer avformat/matroskadec: fix handling of recursive SeekHead elements When matroska_execute_seekhead() is called, it goes through the list of seekhead entries and attempts to read elements not read yet. When doing this, the parser can find further SeekHead elements, and will extend the matroska->seekhead list. This can lead to a (practically) infinite loop with certain broken files. (Maybe it can happen even with valid files. The demuxer doesn't seem to check correctly whether an element has already been read.) Fix this by ignoring elements that were added to the seekhead field during executing seekhead entries. This does not fix the possible situation when multiple SeekHead elements after the file header (i.e. occur after the "before_pos" file position) point to the same elements. These elements will probably be parsed multiple times, likely leading to bugs. Fixes ticket #4162. Signed-off-by: Michael Niedermayer (cherry picked from commit 6551acab6877addae815decd02aeca33ba4990c8) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=68b6a5efbfd530e705a4b1e91da38f1350406264 --- libavformat/matroskadec.c |6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 6552efe..884960b 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1425,13 +1425,17 @@ static void matroska_execute_seekhead(MatroskaDemuxContext *matroska) EbmlList *seekhead_list = &matroska->seekhead; int64_t before_pos = avio_tell(matroska->ctx->pb); int i; +int nb_elem; // we should not do any seeking in the streaming case if (!matroska->ctx->pb->seekable || (matroska->ctx->flags & AVFMT_FLAG_IGNIDX)) return; -for (i = 0; i < seekhead_list->nb_elem; i++) { +// do not read entries that are added while parsing seekhead entries +nb_elem = seekhead_list->nb_elem; + +for (i = 0; i < nb_elem; i++) { MatroskaSeekhead *seekhead = seekhead_list->elem; if (seekhead[i].pos <= before_pos) continue; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Update for 2.1.7
ffmpeg | branch: release/2.1 | Michael Niedermayer | Tue Dec 30 16:16:23 2014 +0100| [c27539cd1eaaab1327383cfcbb9ee44b1f9ddaab] | committer: Michael Niedermayer Update for 2.1.7 > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c27539cd1eaaab1327383cfcbb9ee44b1f9ddaab --- RELEASE |2 +- VERSION |2 +- doc/Doxyfile |2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/RELEASE b/RELEASE index 399088b..04b10b4 100644 --- a/RELEASE +++ b/RELEASE @@ -1 +1 @@ -2.1.6 +2.1.7 diff --git a/VERSION b/VERSION index 399088b..04b10b4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.6 +2.1.7 diff --git a/doc/Doxyfile b/doc/Doxyfile index ae45600..3747d7a 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = FFmpeg # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 2.1.6 +PROJECT_NUMBER = 2.1.7 # With the PROJECT_LOGO tag one can specify a logo or icon that is included # in the documentation. The maximum height of the logo should not exceed 55 ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avfilter/vf_uspp: clear AVPacket to not leave uninitialized memory
ffmpeg | branch: master | Michael Niedermayer | Tue Dec 30 15:07:14 2014 +0100| [eb465b8c56d455fddf0f4f9f2625e2fe3ff7ea06] | committer: Michael Niedermayer avfilter/vf_uspp: clear AVPacket to not leave uninitialized memory Fixes CID1260707 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eb465b8c56d455fddf0f4f9f2625e2fe3ff7ea06 --- libavfilter/vf_uspp.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavfilter/vf_uspp.c b/libavfilter/vf_uspp.c index ffd340a..2974ebe 100644 --- a/libavfilter/vf_uspp.c +++ b/libavfilter/vf_uspp.c @@ -250,7 +250,7 @@ static void filter(USPPContext *p, uint8_t *dst[3], uint8_t *src[3], const int y1c = y1 >> p->vsub; const int BLOCKc = BLOCK >> p->hsub; int offset; -AVPacket pkt; +AVPacket pkt = {0}; int got_pkt_ptr; av_init_packet(&pkt); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] ffprobe: Support extracting the number of reference frames
ffmpeg | branch: master | Michael Niedermayer | Mon Dec 29 12:23:02 2014 +0100| [eee9b7a673de597b04de5df9ef837815e879938c] | committer: Michael Niedermayer ffprobe: Support extracting the number of reference frames Fixes Ticket3141 Reviewed-by: Stefano Sabatini Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eee9b7a673de597b04de5df9ef837815e879938c --- doc/ffprobe.xsd|1 + ffprobe.c |1 + tests/ref/fate/ffprobe_compact |4 ++-- tests/ref/fate/ffprobe_csv |4 ++-- tests/ref/fate/ffprobe_default |2 ++ tests/ref/fate/ffprobe_flat|2 ++ tests/ref/fate/ffprobe_ini |2 ++ tests/ref/fate/ffprobe_json|2 ++ tests/ref/fate/ffprobe_xml |4 ++-- 9 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/ffprobe.xsd b/doc/ffprobe.xsd index c2cab37..226169e 100644 --- a/doc/ffprobe.xsd +++ b/doc/ffprobe.xsd @@ -182,6 +182,7 @@ + diff --git a/ffprobe.c b/ffprobe.c index 24ecafd..faddc16 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -2141,6 +2141,7 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id } else { print_str_opt("timecode", "N/A"); } +print_int("refs", dec_ctx->refs); break; case AVMEDIA_TYPE_AUDIO: diff --git a/tests/ref/fate/ffprobe_compact b/tests/ref/fate/ffprobe_compact index b7526f4..84d9667 100644 --- a/tests/ref/fate/ffprobe_compact +++ b/tests/ref/fate/ffprobe_compact @@ -27,6 +27,6 @@ frame|media_type=video|key_frame=1|pkt_pts=6144|pkt_pts_time=0.12|pkt_dts=61 packet|codec_type=video|stream_index=2|pts=6144|pts_time=0.12|dts=6144|dts_time=0.12|duration=2048|duration_time=0.04|convergence_duration=N/A|convergence_duration_time=N/A|size=3|pos=1024801|flags=K frame|media_type=video|key_frame=1|pkt_pts=6144|pkt_pts_time=0.12|pkt_dts=6144|pkt_dts_time=0.12|best_effort_timestamp=6144|best_effort_timestamp_time=0.12|pkt_duration=2048|pkt_duration_time=0.04|pkt_pos=1024801|pkt_size=3|width=100|height=100|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0 stream|index=0|codec_name=pcm_s16le|profile=unknown|codec_type=audio|codec_time_base=1/44100|codec_tag_string=PSD[16]|codec_tag=0x10445350|sample_fmt=s16|sample_rate=44100|channels=1|channel_layout=unknown|bits_per_sample=16|id=N/A|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/44100|start_pts=0|start_time=0.00|duration_ts=N/A|duration=N/A|bit_rate=705600|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=6|nb_read_packets=6|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|tag:E=mc²|tag:encoder=Lavc pcm_s16le -stream|index=1|codec_name=rawvideo|profile=unknown|codec_type=video|codec_time_base=1/51200|codec_tag_string=RGB[24]|codec_tag=0x18424752|width=320|height=240|has_b_frames=0|sample_aspect_ratio=1:1|display_aspect_ratio=4:3|pix_fmt=rgb24|level=-99|color_range=N/A|color_space=unknown|color_transfer=unknown|color_primaries=unknown|chroma_location=unspecified|timecode=N/A|id=N/A|r_frame_rate=25/1|avg_frame_rate=25/1|time_base=1/51200|start_pts=0|start_time=0.00|duration_ts=N/A|duration=N/A|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=4|nb_read_packets=4|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|tag:title=foobar|tag:duration_ts=field-and-tags-conflict-attempt|tag:encoder=Lavc rawvideo -stream|index=2|codec_name=rawvideo|profile=unknown|codec_type=video|codec_time_base=1/51200|codec_tag_string=RGB[24]|codec_tag=0x18424752|width=100|height=100|has_b_frames=0|sample_aspect_ratio=1:1|display_aspect_ratio=1:1|pix_fmt=rgb24|level=-99|color_range=N/A|color_space=unknown|color_transfer=unknown|color_primaries=unknown|chroma_location=unspecified|timecode=N/A|id=N/A|r_frame_rate=25/1|avg_frame_rate=25/1|time_base=1/51200|start_pts=0|start_time=0.00|duration_ts=N/A|duration=N/A|bit_rate=N/A|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=4|nb_read_packets=4|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|tag:encoder=Lavc rawvideo +stream|index=1|codec_name=rawvideo|profile=unknow
[FFmpeg-cvslog] avfilter/vf_yadif: add >8bit planar rgb formats
ffmpeg | branch: master | Michael Niedermayer | Tue Dec 30 22:52:45 2014 +0100| [081567397e3c585b39c5815e1ed6b45760a42f15] | committer: Michael Niedermayer avfilter/vf_yadif: add >8bit planar rgb formats Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=081567397e3c585b39c5815e1ed6b45760a42f15 --- libavfilter/vf_yadif.c |5 + 1 file changed, 5 insertions(+) diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c index da6ee70..8b951a4 100644 --- a/libavfilter/vf_yadif.c +++ b/libavfilter/vf_yadif.c @@ -448,6 +448,11 @@ static int query_formats(AVFilterContext *ctx) AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUVA444P, AV_PIX_FMT_GBRP, +AV_PIX_FMT_GBRP9, +AV_PIX_FMT_GBRP10, +AV_PIX_FMT_GBRP12, +AV_PIX_FMT_GBRP14, +AV_PIX_FMT_GBRP16, AV_PIX_FMT_GBRAP, AV_PIX_FMT_NONE }; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avfilter/vf_cropdetect: adjust Default threshold based on bit depth
ffmpeg | branch: master | Michael Niedermayer | Tue Dec 30 21:02:34 2014 +0100| [a288d08d84f66c74984ebc9cc9f2b9f930ef3fdd] | committer: Michael Niedermayer avfilter/vf_cropdetect: adjust Default threshold based on bit depth Also allow specifying thresholds that are bit depth independant Previous version reviewed by: Reimar Döffinger Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a288d08d84f66c74984ebc9cc9f2b9f930ef3fdd --- libavfilter/vf_cropdetect.c | 16 ++-- 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libavfilter/vf_cropdetect.c b/libavfilter/vf_cropdetect.c index dd237ef..e8492cd 100644 --- a/libavfilter/vf_cropdetect.c +++ b/libavfilter/vf_cropdetect.c @@ -35,7 +35,7 @@ typedef struct CropDetectContext { const AVClass *class; int x1, y1, x2, y2; -int limit; +float limit; int round; int reset_count; int frame_nb; @@ -127,7 +127,7 @@ static av_cold int init(AVFilterContext *ctx) s->frame_nb = -2; -av_log(ctx, AV_LOG_VERBOSE, "limit:%d round:%d reset_count:%d\n", +av_log(ctx, AV_LOG_VERBOSE, "limit:%f round:%d reset_count:%d\n", s->limit, s->round, s->reset_count); return 0; @@ -137,9 +137,12 @@ static int config_input(AVFilterLink *inlink) { AVFilterContext *ctx = inlink->dst; CropDetectContext *s = ctx->priv; +const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format); -av_image_fill_max_pixsteps(s->max_pixsteps, NULL, - av_pix_fmt_desc_get(inlink->format)); +av_image_fill_max_pixsteps(s->max_pixsteps, NULL, desc); + +if (s->limit < 1.0) +s->limit *= (1 << (desc->comp[0].depth_minus1 + 1)) - 1; s->x1 = inlink->w - 1; s->y1 = inlink->h - 1; @@ -160,6 +163,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) int w, h, x, y, shrink_by; AVDictionary **metadata; int outliers, last_y; +int limit = round(s->limit); // ignore first 2 frames - they may be empty if (++s->frame_nb > 0) { @@ -177,7 +181,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) #define FIND(DST, FROM, NOEND, INC, STEP0, STEP1, LEN) \ outliers = 0;\ for (last_y = y = FROM; NOEND; y = y INC) {\ -if (checkline(ctx, frame->data[0] + STEP0 * y, STEP1, LEN, bpp) > s->limit) {\ +if (checkline(ctx, frame->data[0] + STEP0 * y, STEP1, LEN, bpp) > limit) {\ if (++outliers > s->max_outliers) { \ DST = last_y;\ break;\ @@ -238,7 +242,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM static const AVOption cropdetect_options[] = { -{ "limit", "Threshold below which the pixel is considered black", OFFSET(limit), AV_OPT_TYPE_INT, { .i64 = 24 }, 0, 65535, FLAGS }, +{ "limit", "Threshold below which the pixel is considered black", OFFSET(limit), AV_OPT_TYPE_FLOAT, { .dbl = 24.0/255 }, 0, 65535, FLAGS }, { "round", "Value by which the width/height should be divisible", OFFSET(round), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, FLAGS }, { "reset", "Recalculate the crop area after this many frames", OFFSET(reset_count), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FLAGS }, { "reset_count", "Recalculate the crop area after this many frames",OFFSET(reset_count),AV_OPT_TYPE_INT,{ .i64 = 0 }, 0, INT_MAX, FLAGS }, ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] x86/swr: add SSE2/AVX pack_8ch functions
ffmpeg | branch: master | James Almer | Tue Dec 30 18:16:37 2014 -0300| [37b35feb64e4e0382cd5e4502dbf0f7ff9aa0b5f] | committer: James Almer x86/swr: add SSE2/AVX pack_8ch functions Reviewed-by: Michael Niedermayer Reviewed-by: Ronald S. Bultje Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=37b35feb64e4e0382cd5e4502dbf0f7ff9aa0b5f --- libavcodec/x86/flacdsp.asm | 13 --- libavutil/x86/x86util.asm | 37 libswresample/x86/audio_convert.asm| 145 libswresample/x86/audio_convert_init.c | 17 4 files changed, 199 insertions(+), 13 deletions(-) diff --git a/libavcodec/x86/flacdsp.asm b/libavcodec/x86/flacdsp.asm index d60a6e4..43a2f01 100644 --- a/libavcodec/x86/flacdsp.asm +++ b/libavcodec/x86/flacdsp.asm @@ -175,19 +175,6 @@ FLAC_DECORRELATE_32 ms, 2, 0, 1, add ;void ff_flac_decorrelate_indep__(uint8_t **out, int32_t **in, int channels, ;int len, int shift); ;- -%macro TRANSPOSE8x4D 9 -SBUTTERFLY dq, %1, %2, %9 -SBUTTERFLY dq, %3, %4, %9 -SBUTTERFLY dq, %5, %6, %9 -SBUTTERFLY dq, %7, %8, %9 -SBUTTERFLY qdq, %1, %3, %9 -SBUTTERFLY qdq, %2, %4, %9 -SBUTTERFLY qdq, %5, %7, %9 -SBUTTERFLY qdq, %6, %8, %9 -SWAP %2, %5 -SWAP %4, %7 -%endmacro - ;%1 = bps ;%2 = channels ;%3 = last xmm reg used diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm index 2d02f75..d6702c1 100644 --- a/libavutil/x86/x86util.asm +++ b/libavutil/x86/x86util.asm @@ -107,6 +107,43 @@ SWAP %5, %2, %3 %endmacro +%macro TRANSPOSE8x4D 9-11 +%if ARCH_X86_64 +SBUTTERFLY dq, %1, %2, %9 +SBUTTERFLY dq, %3, %4, %9 +SBUTTERFLY dq, %5, %6, %9 +SBUTTERFLY dq, %7, %8, %9 +SBUTTERFLY qdq, %1, %3, %9 +SBUTTERFLY qdq, %2, %4, %9 +SBUTTERFLY qdq, %5, %7, %9 +SBUTTERFLY qdq, %6, %8, %9 +SWAP %2, %5 +SWAP %4, %7 +%else +; in: m0..m7 +; out: m0..m7, unless %11 in which case m2 is in %9 +; spills into %9 and %10 +movdqa %9, m%7 +SBUTTERFLY dq, %1, %2, %7 +movdqa %10, m%2 +movdqa m%7, %9 +SBUTTERFLY dq, %3, %4, %2 +SBUTTERFLY dq, %5, %6, %2 +SBUTTERFLY dq, %7, %8, %2 +SBUTTERFLY qdq, %1, %3, %2 +movdqa %9, m%3 +movdqa m%2, %10 +SBUTTERFLY qdq, %2, %4, %3 +SBUTTERFLY qdq, %5, %7, %3 +SBUTTERFLY qdq, %6, %8, %3 +SWAP %2, %5 +SWAP %4, %7 +%if %0<11 +movdqa m%3, %9 +%endif +%endif +%endmacro + %macro TRANSPOSE8x8W 9-11 %if ARCH_X86_64 SBUTTERFLY wd, %1, %2, %9 diff --git a/libswresample/x86/audio_convert.asm b/libswresample/x86/audio_convert.asm index 57d3a89..3706432 100644 --- a/libswresample/x86/audio_convert.asm +++ b/libswresample/x86/audio_convert.asm @@ -303,6 +303,135 @@ pack_6ch_%2_to_%1_u_int %+ SUFFIX %endif %endmacro +%macro PACK_8CH 5-7 +cglobal pack_8ch_%2_to_%1_%3, 2,10,10, ARCH_X86_32*32, dst, src, len, src1, src2, src3, src4, src5, src6, src7 +mov dstq, [dstq] +%if ARCH_X86_32 +DEFINE_ARGS dst, src, src2, src3, src4, src5, src6 +%define lend dword r2m +%define src1q r0q +%define src1m r1mp +%define src7q r0q +%define src7m r3mp +mov dstm, dstq +%endif +movsrc7q, [srcq+7*gprsize] +movsrc6q, [srcq+6*gprsize] +movsrc5q, [srcq+5*gprsize] +movsrc4q, [srcq+4*gprsize] +%if ARCH_X86_32 +mov src7m, src7q +%endif +movsrc3q, [srcq+3*gprsize] +movsrc2q, [srcq+2*gprsize] +movsrc1q, [srcq+1*gprsize] +mov srcq, [srcq] +%ifidn %3, a +%if ARCH_X86_32 +test dstmp, mmsize-1 +%else +test dstq, mmsize-1 +%endif +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test srcq, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test src1q, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test src2q, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test src3q, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test src4q, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test src5q, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +test src6q, mmsize-1 +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +%if ARCH_X86_32 +test src7m, mmsize-1 +%else +test src7q, mmsize-1 +%endif +jne pack_8ch_%2_to_%1_u_int %+ SUFFIX +%else +pack_8ch_%2_to_%1_u_int %+ SUFFIX +%endif +subsrc1q, srcq +subsrc2q, srcq +subsrc3q, srcq +subsrc4q, srcq +subsrc5q, srcq +subsrc6q, srcq +%if ARCH_X86_64 +subsrc7q, srcq +%else +mov src1m, src1q +sub src7m, srcq +%endif + +%if ARCH_X86_64 +%7 x,x,x,x,m9,x +%elifidn %1, int32 +%define m9 [flt2p31] +%else +%define m9 [flt2pm31] +%endif + +.loop: +mov%3 m0, [srcq ] +mov%3 m1, [srcq+src1q] +mov%3 m2, [srcq+src2q
[FFmpeg-cvslog] doc/filters: document bit-depth independent cropdetect limit
ffmpeg | branch: master | Michael Niedermayer | Wed Dec 31 03:01:19 2014 +0100| [037b527d62500cfde89d3bda5d4ac04ce8b8d959] | committer: Michael Niedermayer doc/filters: document bit-depth independent cropdetect limit Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=037b527d62500cfde89d3bda5d4ac04ce8b8d959 --- doc/filters.texi |6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index 261fd24..1e2567e 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -3303,8 +3303,10 @@ It accepts the following parameters: @item limit Set higher black value threshold, which can be optionally specified -from nothing (0) to everything (255). An intensity value greater -to the set value is considered non-black. It defaults to 24. +from nothing (0) to everything (255 for 8bit based formats). An intensity +value greater to the set value is considered non-black. It defaults to 24. +You can also specify a value between 0.0 and 1.0 which will be scaled depending +on the bitdepth of the pixel format. @item round The value which the width/height should be divisible by. It defaults to ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/loco: Support LOCO reference encoder with odd width
ffmpeg | branch: master | Michael Niedermayer | Wed Dec 31 02:41:01 2014 +0100| [d97b94f1af43c280c03e7d16830913911c67e94e] | committer: Michael Niedermayer avcodec/loco: Support LOCO reference encoder with odd width Fixes Ticket1221 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d97b94f1af43c280c03e7d16830913911c67e94e --- libavcodec/loco.c | 19 +++ 1 file changed, 19 insertions(+) diff --git a/libavcodec/loco.c b/libavcodec/loco.c index bf52c49..88c66d9 100644 --- a/libavcodec/loco.c +++ b/libavcodec/loco.c @@ -168,6 +168,23 @@ static int loco_decode_plane(LOCOContext *l, uint8_t *data, int width, int heigh return (get_bits_count(&rc.gb) + 7) >> 3; } +static void rotate_faulty_loco(uint8_t *data, int width, int height, int stride, int step) +{ +int y; + +for (y=1; y=y) { +memmove(data + y*stride, +data + y*(stride + step), +step*(width-y)); +if (y+1 < height) +memmove(data + y*stride + step*(width-y), +data + (y+1)*stride, +step*y); +} +} +} + static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt) @@ -216,6 +233,8 @@ static int decode_frame(AVCodecContext *avctx, ADVANCE_BY_DECODED; decoded = loco_decode_plane(l, p->data[0] + p->linesize[0]*(avctx->height-1) + 2, avctx->width, avctx->height, -p->linesize[0], buf, buf_size, 3); +if (avctx->width & 1) +rotate_faulty_loco(p->data[0] + p->linesize[0]*(avctx->height-1), avctx->width, avctx->height, -p->linesize[0], 3); break; case LOCO_CRGBA: case LOCO_RGBA: ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog