[FFmpeg-cvslog] doc/filters: add yet another fftfilt example
ffmpeg | branch: master | Paul B Mahol | Sun Jan 17 11:13:33 2016 +0100| [bb2f8bdeca93f1b9ccfac3677ade0989e97bc82a] | committer: Paul B Mahol doc/filters: add yet another fftfilt example Signed-off-by: Paul B Mahol > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bb2f8bdeca93f1b9ccfac3677ade0989e97bc82a --- doc/filters.texi |6 ++ 1 file changed, 6 insertions(+) diff --git a/doc/filters.texi b/doc/filters.texi index f4bda6a..d8e3317 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -6468,6 +6468,12 @@ Sharpen: fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)' @end example +@item +Blur: +@example +fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))' +@end example + @end itemize @section field ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] lavc/rawdec: Use AV_PIX_FMT_PAL8 for 1-bit raw QuickTime video
ffmpeg | branch: master | Mats Peterson | Sun Jan 17 22:27:52 2016 +0100| [5da1477fa01b8f5eb9804435f26e76ba423624e9] | committer: Michael Niedermayer lavc/rawdec: Use AV_PIX_FMT_PAL8 for 1-bit raw QuickTime video Match the use of AV_PIX_FMT_PAL8 for 1-bit QuickTime Animation in lavc/qtrle. To reiterate, 1-bit video is not necessary black & white in QuickTime, merely bi-level. The two colors can be any color. The palette, either included in the sample description, or the default Macintosh palette (black & white for 1-bit video) will be set in lavf/qtpalette. See the QuickTime File Format Specification for details. Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5da1477fa01b8f5eb9804435f26e76ba423624e9 --- libavcodec/raw.c|4 ++-- libavcodec/rawdec.c | 31 ++- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/libavcodec/raw.c b/libavcodec/raw.c index cda70ac..3f2cc11 100644 --- a/libavcodec/raw.c +++ b/libavcodec/raw.c @@ -255,13 +255,13 @@ const PixelFormatTag avpriv_pix_fmt_bps_avi[] = { }; const PixelFormatTag avpriv_pix_fmt_bps_mov[] = { -{ AV_PIX_FMT_MONOWHITE, 1 }, +{ AV_PIX_FMT_PAL8, 1 }, { AV_PIX_FMT_PAL8, 2 }, { AV_PIX_FMT_PAL8, 4 }, { AV_PIX_FMT_PAL8, 8 }, { AV_PIX_FMT_RGB555BE, 16 }, { AV_PIX_FMT_RGB24,24 }, { AV_PIX_FMT_ARGB, 32 }, -{ AV_PIX_FMT_MONOWHITE,33 }, +{ AV_PIX_FMT_PAL8, 33 }, { AV_PIX_FMT_NONE, 0 }, }; diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index 50cee39..cb0364c 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -41,7 +41,7 @@ typedef struct RawVideoContext { AVBufferRef *palette; int frame_size; /* size of the frame in bytes */ int flip; -int is_2_4_bpp; // 2 or 4 bpp raw in avi/mov +int is_1_2_4_bpp; // 1 bpp raw in mov, and 2 or 4 bpp raw in avi/mov int is_yuv2; int is_lt_16bpp; // 16bpp pixfmt and bits_per_coded_sample < 16 int tff; @@ -159,12 +159,13 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, AVFrame *frame = data; -if ((avctx->bits_per_coded_sample == 4 || avctx->bits_per_coded_sample == 2) && +if ((avctx->bits_per_coded_sample == 4 || avctx->bits_per_coded_sample == 2 +|| avctx->bits_per_coded_sample == 1) && avctx->pix_fmt == AV_PIX_FMT_PAL8 && (!avctx->codec_tag || avctx->codec_tag == MKTAG('r','a','w',' '))) { -context->is_2_4_bpp = 1; +context->is_1_2_4_bpp = 1; context->frame_size = av_image_get_buffer_size(avctx->pix_fmt, - FFALIGN(avctx->width, 16), + FFALIGN(avctx->width, 32), avctx->height, 1); } else { context->is_lt_16bpp = av_get_bits_per_pixel(desc) == 16 && avctx->bits_per_coded_sample && avctx->bits_per_coded_sample < 16; @@ -174,7 +175,7 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, if (context->frame_size < 0) return context->frame_size; -need_copy = !avpkt->buf || context->is_2_4_bpp || context->is_yuv2 || context->is_lt_16bpp; +need_copy = !avpkt->buf || context->is_1_2_4_bpp || context->is_yuv2 || context->is_lt_16bpp; frame->pict_type= AV_PICTURE_TYPE_I; frame->key_frame= 1; @@ -201,8 +202,8 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, if (!frame->buf[0]) return AVERROR(ENOMEM); -//2bpp and 4bpp raw in avi and mov (yes this is ugly ...) -if (context->is_2_4_bpp) { +// 1 bpp raw in mov, and 2 or 4 bpp raw in avi/mov +if (context->is_1_2_4_bpp) { int i; uint8_t *dst = frame->buf[0]->data; buf_size = context->frame_size - AVPALETTE_SIZE; @@ -212,8 +213,7 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, dst[2 * i + 1] = buf[i] & 15; } linesize_align = 8; -} else { -av_assert0(avctx->bits_per_coded_sample == 2); +} else if (avctx->bits_per_coded_sample == 2) { for (i = 0; 4 * i + 3 < buf_size && isize; i++) { dst[4 * i + 0] = buf[i] >> 6; dst[4 * i + 1] = buf[i] >> 4 & 3; @@ -221,6 +221,19 @@ static int raw_decode(AVCodecContext *avctx, void *data, int *got_frame, dst[4 * i + 3] = buf[i] & 3; } linesize_align = 16; +} else { +av_assert0(avctx->bits_per_coded_sample == 1); +for (i = 0; 8 * i + 7 < buf_size && isize; i++) { +dst[8 * i + 0] = buf[i] >> 7 & 1; +dst[8 * i + 1] = buf[i] >> 6 & 1; +dst[8 * i + 2] = buf[i] >> 5 & 1; +dst[8 * i + 3] = buf[i] >> 4
[FFmpeg-cvslog] videodsp: fix 1-byte overread in top/bottom READ_NUM_BYTES iterations.
ffmpeg | branch: master | Ronald S. Bultje | Sat Jan 16 14:44:28 2016 -0500| [0f88b3f82fafd536979993aeaafcb11a22266dbd] | committer: Ronald S. Bultje videodsp: fix 1-byte overread in top/bottom READ_NUM_BYTES iterations. This can overread (either before start or beyond end) of the buffer in Nx1 (i.e. height=1) images. Fixes mozilla bug 1240080. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0f88b3f82fafd536979993aeaafcb11a22266dbd --- libavcodec/x86/videodsp.asm | 21 ++--- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/libavcodec/x86/videodsp.asm b/libavcodec/x86/videodsp.asm index 48f5ac0..a807d3b 100644 --- a/libavcodec/x86/videodsp.asm +++ b/libavcodec/x86/videodsp.asm @@ -193,14 +193,10 @@ hvar_fn movvalb, [srcq+%2-1] %elif (%2-%%off) == 2 movvalw, [srcq+%2-2] -%elifidn %1, body +%else movvalb, [srcq+%2-1] -salvald, 16 +rorvald, 16 movvalw, [srcq+%2-3] -%elifidn %1, bottom -movd mm %+ %%mmx_idx, [srcq+%2-4] -%else ; top -movd mm %+ %%mmx_idx, [srcq+%2-3] %endif %endif ; (%2-%%off) >= 1 %endmacro ; READ_NUM_BYTES @@ -253,18 +249,13 @@ hvar_fn mov [dstq+%2-1], valb %elif (%2-%%off) == 2 mov [dstq+%2-2], valw -%elifidn %1, body -mov [dstq+%2-3], valw -sarvald, 16 -mov [dstq+%2-1], valb %else -movd vald, mm %+ %%mmx_idx -%ifidn %1, bottom -sarvald, 8 -%endif mov [dstq+%2-3], valw -sarvald, 16 +rorvald, 16 mov [dstq+%2-1], valb +%ifnidn %1, body +rorvald, 16 +%endif %endif %endif ; (%2-%%off) >= 1 %endmacro ; WRITE_NUM_BYTES ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avfilter/avf_showfreqs/showspectrum: rename skip_samples to hop_size
ffmpeg | branch: master | Paul B Mahol | Mon Jan 18 19:38:14 2016 +0100| [4e17efd852bd3d83d1b6465614fc2d44be8e3e3d] | committer: Paul B Mahol avfilter/avf_showfreqs/showspectrum: rename skip_samples to hop_size Signed-off-by: Paul B Mahol > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4e17efd852bd3d83d1b6465614fc2d44be8e3e3d --- libavfilter/avf_showfreqs.c| 10 +- libavfilter/avf_showspectrum.c | 10 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavfilter/avf_showfreqs.c b/libavfilter/avf_showfreqs.c index 311dd47..6323887 100644 --- a/libavfilter/avf_showfreqs.c +++ b/libavfilter/avf_showfreqs.c @@ -53,7 +53,7 @@ typedef struct ShowFreqsContext { float **avg_data; float *window_func_lut; float overlap; -int skip_samples; +int hop_size; int nb_channels; int nb_freq; int win_size; @@ -205,8 +205,8 @@ static int config_output(AVFilterLink *outlink) ff_generate_window_func(s->window_func_lut, s->win_size, s->win_func, &overlap); if (s->overlap == 1.) s->overlap = overlap; -s->skip_samples = (1. - s->overlap) * s->win_size; -if (s->skip_samples < 1) { +s->hop_size = (1. - s->overlap) * s->win_size; +if (s->hop_size < 1) { av_log(ctx, AV_LOG_ERROR, "overlap %f too big\n", s->overlap); return AVERROR(EINVAL); } @@ -434,14 +434,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) } fin->pts = s->pts; -s->pts += s->skip_samples; +s->pts += s->hop_size; ret = av_audio_fifo_peek(s->fifo, (void **)fin->extended_data, s->win_size); if (ret < 0) goto fail; ret = plot_freqs(inlink, fin); av_frame_free(&fin); -av_audio_fifo_drain(s->fifo, s->skip_samples); +av_audio_fifo_drain(s->fifo, s->hop_size); if (ret < 0) goto fail; } diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c index 424d1f2..3efd000 100644 --- a/libavfilter/avf_showspectrum.c +++ b/libavfilter/avf_showspectrum.c @@ -74,7 +74,7 @@ typedef struct { double win_scale; float overlap; float gain; -int skip_samples; +int hop_size; float *combine_buffer; ///< color combining buffer (3 * h items) AVAudioFifo *fifo; int64_t pts; @@ -367,8 +367,8 @@ static int config_output(AVFilterLink *outlink) ff_generate_window_func(s->window_func_lut, s->win_size, s->win_func, &overlap); if (s->overlap == 1) s->overlap = overlap; -s->skip_samples = (1. - s->overlap) * s->win_size; -if (s->skip_samples < 1) { +s->hop_size = (1. - s->overlap) * s->win_size; +if (s->hop_size < 1) { av_log(ctx, AV_LOG_ERROR, "overlap %f too big\n", s->overlap); return AVERROR(EINVAL); } @@ -805,7 +805,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) } fin->pts = s->pts; -s->pts += s->skip_samples; +s->pts += s->hop_size; ret = av_audio_fifo_peek(s->fifo, (void **)fin->extended_data, s->win_size); if (ret < 0) goto fail; @@ -820,7 +820,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) ret = plot_spectrum_column(inlink, fin); av_frame_free(&fin); -av_audio_fifo_drain(s->fifo, s->skip_samples); +av_audio_fifo_drain(s->fifo, s->hop_size); if (ret < 0) goto fail; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/put_bits: Assert buf_ptr in flush_put_bits()
ffmpeg | branch: master | Michael Niedermayer | Mon Jan 18 17:13:55 2016 +0100| [3ef5de0f19774e2c3dd9b08ba2e8ab7241a4862a] | committer: Michael Niedermayer avcodec/put_bits: Assert buf_ptr in flush_put_bits() Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3ef5de0f19774e2c3dd9b08ba2e8ab7241a4862a --- libavcodec/put_bits.h |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/put_bits.h b/libavcodec/put_bits.h index 0db8a03..68ed391 100644 --- a/libavcodec/put_bits.h +++ b/libavcodec/put_bits.h @@ -105,7 +105,7 @@ static inline void flush_put_bits(PutBitContext *s) s->bit_buf <<= s->bit_left; #endif while (s->bit_left < 32) { -/* XXX: should test end of buffer */ +av_assert0(s->buf_ptr < s->buf_end); #ifdef BITSTREAM_WRITER_LE *s->buf_ptr++ = s->bit_buf; s->bit_buf >>= 8; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/gif: Fix lzw buffer size
ffmpeg | branch: master | Michael Niedermayer | Mon Jan 18 19:20:03 2016 +0100| [03d83ba34b2070878909eae18dfac0f519503777] | committer: Michael Niedermayer avcodec/gif: Fix lzw buffer size Fixes out of array access Fixes: aaa479088e6fb40b04837b3119f47b04/asan_heap-oob_e38c68_8576_9d653078b2470700e2834636f12ff557.tga Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=03d83ba34b2070878909eae18dfac0f519503777 --- libavcodec/gif.c |7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libavcodec/gif.c b/libavcodec/gif.c index acdc0e1..6af1f4a 100644 --- a/libavcodec/gif.c +++ b/libavcodec/gif.c @@ -43,6 +43,7 @@ typedef struct GIFContext { const AVClass *class; LZWState *lzw; uint8_t *buf; +int buf_size; AVFrame *last_frame; int flags; uint32_t palette[AVPALETTE_COUNT]; ///< local reference palette for !pal8 @@ -174,7 +175,7 @@ static int gif_image_write_image(AVCodecContext *avctx, bytestream_put_byte(bytestream, 0x08); -ff_lzw_encode_init(s->lzw, s->buf, 2 * width * height, +ff_lzw_encode_init(s->lzw, s->buf, s->buf_size, 12, FF_LZW_GIF, put_bits); ptr = buf + y_start*linesize + x_start; @@ -231,7 +232,8 @@ FF_ENABLE_DEPRECATION_WARNINGS s->transparent_index = -1; s->lzw = av_mallocz(ff_lzw_encode_state_size); -s->buf = av_malloc(avctx->width*avctx->height*2); +s->buf_size = avctx->width*avctx->height*2 + 1000; +s->buf = av_malloc(s->buf_size); s->tmpl = av_malloc(avctx->width); if (!s->tmpl || !s->buf || !s->lzw) return AVERROR(ENOMEM); @@ -321,6 +323,7 @@ static int gif_encode_close(AVCodecContext *avctx) av_freep(&s->lzw); av_freep(&s->buf); +s->buf_size = 0; av_frame_free(&s->last_frame); av_freep(&s->tmpl); return 0; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: disable -Wunused-const-variable
ffmpeg | branch: master | James Almer | Mon Jan 18 16:25:11 2016 -0300| [c1a3683f26fb49ae700f0c202ab395cbcbd927a5] | committer: James Almer configure: disable -Wunused-const-variable The option became too aggressive with GCC 6, generating nearly 500 warnings from static const variables defined in assorted headers Reviewed-by: Michael Niedermayer Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c1a3683f26fb49ae700f0c202ab395cbcbd927a5 --- configure |1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index cdf07ae..4dcb27b 100755 --- a/configure +++ b/configure @@ -5780,6 +5780,7 @@ check_disable_warning -Wno-parentheses check_disable_warning -Wno-switch check_disable_warning -Wno-format-zero-length check_disable_warning -Wno-pointer-sign +check_disable_warning -Wno-unused-const-variable # add some linker flags check_ldflags -Wl,--warn-common ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avconv: Simplify poll_filters() return value check
ffmpeg | branch: master | Luca Barbato | Sat Jan 2 14:43:12 2016 +0100| [7ebf1b4adad40e2b0d88ebd5cfde821a7a0ceab2] | committer: Luca Barbato avconv: Simplify poll_filters() return value check Signed-off-by: Luca Barbato > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7ebf1b4adad40e2b0d88ebd5cfde821a7a0ceab2 --- avconv.c | 14 +- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/avconv.c b/avconv.c index 57a3718..0410378 100644 --- a/avconv.c +++ b/avconv.c @@ -2556,16 +2556,12 @@ static int transcode(void) } ret = poll_filters(); -if (ret < 0) { -if (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) { -continue; -} else { -char errbuf[128]; -av_strerror(ret, errbuf, sizeof(errbuf)); +if (ret < 0 && (ret != AVERROR_EOF || ret != AVERROR(EAGAIN))) { +char errbuf[128]; +av_strerror(ret, errbuf, sizeof(errbuf)); -av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", errbuf); -break; -} +av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", errbuf); +break; } /* dump report by using the output first video and audio streams */ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '7ebf1b4adad40e2b0d88ebd5cfde821a7a0ceab2'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:40:32 2016 +0100| [4440c8e9c98f138a04dafdec8f3d21ce8f07f7b9] | committer: Hendrik Leppkes Merge commit '7ebf1b4adad40e2b0d88ebd5cfde821a7a0ceab2' * commit '7ebf1b4adad40e2b0d88ebd5cfde821a7a0ceab2': avconv: Simplify poll_filters() return value check Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4440c8e9c98f138a04dafdec8f3d21ce8f07f7b9 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '63f7f8d1dbf6ce27440fdd56ef38c822fb11b9c2'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:41:32 2016 +0100| [7dae3461c0bbd15e0765f29c33d2eb40566b9562] | committer: Hendrik Leppkes Merge commit '63f7f8d1dbf6ce27440fdd56ef38c822fb11b9c2' * commit '63f7f8d1dbf6ce27440fdd56ef38c822fb11b9c2': avconv: Drop an impossible check Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7dae3461c0bbd15e0765f29c33d2eb40566b9562 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avconv: Drop an impossible check
ffmpeg | branch: master | Luca Barbato | Sat Jan 2 14:43:13 2016 +0100| [63f7f8d1dbf6ce27440fdd56ef38c822fb11b9c2] | committer: Luca Barbato avconv: Drop an impossible check EAGAIN is already managed in poll_filters(). Signed-off-by: Luca Barbato > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=63f7f8d1dbf6ce27440fdd56ef38c822fb11b9c2 --- avconv.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/avconv.c b/avconv.c index 0410378..6b37d6e 100644 --- a/avconv.c +++ b/avconv.c @@ -1231,7 +1231,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output) decoded_frame->width, decoded_frame->height, av_get_pix_fmt_name(decoded_frame->format)); ret = poll_filters(); -if (ret < 0 && (ret != AVERROR_EOF && ret != AVERROR(EAGAIN))) { +if (ret < 0 && ret != AVERROR_EOF) { char errbuf[128]; av_strerror(ret, errbuf, sizeof(errbuf)); @@ -2556,7 +2556,7 @@ static int transcode(void) } ret = poll_filters(); -if (ret < 0 && (ret != AVERROR_EOF || ret != AVERROR(EAGAIN))) { +if (ret < 0 && ret != AVERROR_EOF) { char errbuf[128]; av_strerror(ret, errbuf, sizeof(errbuf)); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'a6259a6ecbad18d58085e4ab23f56151e98d7b53'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:43:03 2016 +0100| [b5513441e477f63e9627ce6eb7c4cad475a4ba35] | committer: Hendrik Leppkes Merge commit 'a6259a6ecbad18d58085e4ab23f56151e98d7b53' * commit 'a6259a6ecbad18d58085e4ab23f56151e98d7b53': qsvenc: properly handle the warning from MFXVideoCORE_SyncOperation Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5513441e477f63e9627ce6eb7c4cad475a4ba35 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] qsvenc: properly handle the warning from MFXVideoCORE_SyncOperation
ffmpeg | branch: master | Maxym Dmytrychenko | Fri Dec 18 14:24:36 2015 +0100| [a6259a6ecbad18d58085e4ab23f56151e98d7b53] | committer: Anton Khirnov qsvenc: properly handle the warning from MFXVideoCORE_SyncOperation Same as what is done in 3b6473b43eb69fc3faaf69f7fd0b83b51db7607f. Signed-off-by: Anton Khirnov > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a6259a6ecbad18d58085e4ab23f56151e98d7b53 --- libavcodec/qsvenc.c |4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index f19ca76..cda11fa 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -919,7 +919,9 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q, av_fifo_generic_read(q->async_fifo, &sync,sizeof(sync),NULL); av_fifo_generic_read(q->async_fifo, &bs, sizeof(bs), NULL); -MFXVideoCORE_SyncOperation(q->session, sync, 6); +do { +ret = MFXVideoCORE_SyncOperation(q->session, sync, 1000); +} while (ret == MFX_WRN_IN_EXECUTION); new_pkt.dts = av_rescale_q(bs->DecodeTimeStamp, (AVRational){1, 9}, avctx->time_base); new_pkt.pts = av_rescale_q(bs->TimeStamp, (AVRational){1, 9}, avctx->time_base); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'd1cd20e4e33f8139e150034b3c457302312d81bd'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:44:50 2016 +0100| [ed9cff9edf0f7f48d66e5700d154f79394f535a2] | committer: Hendrik Leppkes Merge commit 'd1cd20e4e33f8139e150034b3c457302312d81bd' * commit 'd1cd20e4e33f8139e150034b3c457302312d81bd': qsvenc: split encoding frames and reading from the async FIFO Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ed9cff9edf0f7f48d66e5700d154f79394f535a2 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] qsvenc: split encoding frames and reading from the async FIFO
ffmpeg | branch: master | Anton Khirnov | Wed Jan 6 08:39:27 2016 +0100| [d1cd20e4e33f8139e150034b3c457302312d81bd] | committer: Anton Khirnov qsvenc: split encoding frames and reading from the async FIFO This makes sure all the frames are returned at the end. Found-By: Maxym Dmytrychenko > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d1cd20e4e33f8139e150034b3c457302312d81bd --- libavcodec/qsvenc.c | 20 ++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index cda11fa..4a33ade 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -857,8 +857,8 @@ static void print_interlace_msg(AVCodecContext *avctx, QSVEncContext *q) } } -int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q, - AVPacket *pkt, const AVFrame *frame, int *got_packet) +static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, +const AVFrame *frame) { AVPacket new_pkt = { 0 }; mfxBitstream *bs; @@ -913,8 +913,24 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q, av_freep(&bs); } +return 0; +} + +int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q, + AVPacket *pkt, const AVFrame *frame, int *got_packet) +{ +int ret; + +ret = encode_frame(avctx, q, frame); +if (ret < 0) +return ret; + if (!av_fifo_space(q->async_fifo) || (!frame && av_fifo_size(q->async_fifo))) { +AVPacket new_pkt; +mfxBitstream *bs; +mfxSyncPoint sync; + av_fifo_generic_read(q->async_fifo, &new_pkt, sizeof(new_pkt), NULL); av_fifo_generic_read(q->async_fifo, &sync,sizeof(sync),NULL); av_fifo_generic_read(q->async_fifo, &bs, sizeof(bs), NULL); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '2aec600ae7af7d46a4877b5ccc263b39f05a91cb'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:45:48 2016 +0100| [202ed3e5e67441bdb7ace05ba6b853c0e7581448] | committer: Hendrik Leppkes Merge commit '2aec600ae7af7d46a4877b5ccc263b39f05a91cb' * commit '2aec600ae7af7d46a4877b5ccc263b39f05a91cb': asfdec: reject size > INT64_MAX in asf_read_unknown Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=202ed3e5e67441bdb7ace05ba6b853c0e7581448 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] asfdec: reject size > INT64_MAX in asf_read_unknown
ffmpeg | branch: master | Andreas Cadhalpun | Wed Jan 6 07:32:25 2016 +0100| [2aec600ae7af7d46a4877b5ccc263b39f05a91cb] | committer: Anton Khirnov asfdec: reject size > INT64_MAX in asf_read_unknown Both avio_skip and detect_unknown_subobject use int64_t for the size parameter. This fixes a segmentation fault due to infinite recursion. Signed-off-by: Andreas Cadhalpun Signed-off-by: Alexandra Hájková Signed-off-by: Anton Khirnov > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2aec600ae7af7d46a4877b5ccc263b39f05a91cb --- libavformat/asfdec.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index 58480dc..4fc0e3d 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -178,6 +178,9 @@ static int asf_read_unknown(AVFormatContext *s, const GUIDParseTable *g) uint64_t size = avio_rl64(pb); int ret; +if (size > INT64_MAX) +return AVERROR_INVALIDDATA; + if (asf->is_header) asf->unknown_size = size; asf->is_header = 0; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] asfdec: only set asf_pkt->data_size after sanity checks
ffmpeg | branch: master | Andreas Cadhalpun | Wed Jan 6 07:34:42 2016 +0100| [c69461d73797e02e7a3ab4316050c241fa91f53f] | committer: Anton Khirnov asfdec: only set asf_pkt->data_size after sanity checks Otherwise invalid values are used unchecked in the next run. This can cause NULL pointer dereferencing. Signed-off-by: Andreas Cadhalpun Signed-off-by: Alexandra Hájková Signed-off-by: Anton Khirnov > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c69461d73797e02e7a3ab4316050c241fa91f53f --- libavformat/asfdec.c | 18 ++ 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index ca7712f..58480dc 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -1136,14 +1136,15 @@ static int asf_read_replicated_data(AVFormatContext *s, ASFPacket *asf_pkt) { ASFContext *asf = s->priv_data; AVIOContext *pb = s->pb; -int ret; +int ret, data_size; if (!asf_pkt->data_size) { -asf_pkt->data_size = asf_pkt->size_left = avio_rl32(pb); // read media object size -if (asf_pkt->data_size <= 0) +data_size = avio_rl32(pb); // read media object size +if (data_size <= 0) return AVERROR_INVALIDDATA; -if ((ret = av_new_packet(&asf_pkt->avpkt, asf_pkt->data_size)) < 0) +if ((ret = av_new_packet(&asf_pkt->avpkt, data_size)) < 0) return ret; +asf_pkt->data_size = asf_pkt->size_left = data_size; } else avio_skip(pb, 4); // reading of media object size is already done asf_pkt->dts = avio_rl32(pb); // read presentation time @@ -1212,14 +1213,15 @@ static int asf_read_single_payload(AVFormatContext *s, AVPacket *pkt, int64_t offset; uint64_t size; unsigned char *p; -int ret; +int ret, data_size; if (!asf_pkt->data_size) { -asf_pkt->data_size = asf_pkt->size_left = avio_rl32(pb); // read media object size -if (asf_pkt->data_size <= 0) +data_size = avio_rl32(pb); // read media objectgg size +if (data_size <= 0) return AVERROR_EOF; -if ((ret = av_new_packet(&asf_pkt->avpkt, asf_pkt->data_size)) < 0) +if ((ret = av_new_packet(&asf_pkt->avpkt, data_size)) < 0) return ret; +asf_pkt->data_size = asf_pkt->size_left = data_size; } else avio_skip(pb, 4); // skip media object size asf_pkt->dts = avio_rl32(pb); // read presentation time ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'c69461d73797e02e7a3ab4316050c241fa91f53f'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:45:38 2016 +0100| [1ac8a1821abd8803eaf48562c788c5ae5d634915] | committer: Hendrik Leppkes Merge commit 'c69461d73797e02e7a3ab4316050c241fa91f53f' * commit 'c69461d73797e02e7a3ab4316050c241fa91f53f': asfdec: only set asf_pkt->data_size after sanity checks Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1ac8a1821abd8803eaf48562c788c5ae5d634915 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] asfdec: Remove unused function parameters
ffmpeg | branch: master | Alexandra Hájková | Wed Jan 6 06:08:08 2016 +0100| [066281372d90d63ca021b659abcb8faefd6bc4a6] | committer: Anton Khirnov asfdec: Remove unused function parameters Signed-off-by: Anton Khirnov > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=066281372d90d63ca021b659abcb8faefd6bc4a6 --- libavformat/asfdec.c | 19 +-- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index 4fc0e3d..b33677a 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -266,7 +266,7 @@ static int asf_read_metadata(AVFormatContext *s, const char *title, uint16_t len return 0; } -static int asf_read_value(AVFormatContext *s, const uint8_t *name, uint16_t name_len, +static int asf_read_value(AVFormatContext *s, const uint8_t *name, uint16_t val_len, int type, AVDictionary **met) { int ret; @@ -331,7 +331,7 @@ static int asf_read_generic_value(AVIOContext *pb, int type, uint64_t *value) } static int asf_set_metadata(AVFormatContext *s, const uint8_t *name, -uint16_t name_len, int type, AVDictionary **met) +int type, AVDictionary **met) { AVIOContext *pb = s->pb; uint64_t value; @@ -451,7 +451,7 @@ fail: return ret; } -static void get_id3_tag(AVFormatContext *s, int len) +static void get_id3_tag(AVFormatContext *s) { ID3v2ExtraMeta *id3v2_extra_meta = NULL; @@ -470,21 +470,21 @@ static int process_metadata(AVFormatContext *s, const uint8_t *name, uint16_t na if (val_len) { switch (type) { case ASF_UNICODE: -asf_read_value(s, name, name_len, val_len, type, met); +asf_read_value(s, name, val_len, type, met); break; case ASF_BYTE_ARRAY: if (!strcmp(name, "WM/Picture")) // handle cover art asf_read_picture(s, val_len); else if (!strcmp(name, "ID3")) // handle ID3 tag -get_id3_tag(s, val_len); +get_id3_tag(s); else -asf_read_value(s, name, name_len, val_len, type, met); +asf_read_value(s, name, val_len, type, met); break; case ASF_GUID: ff_get_guid(s->pb, &guid); break; default: -if ((ret = asf_set_metadata(s, name, name_len, type, met)) < 0) +if ((ret = asf_set_metadata(s, name, type, met)) < 0) return ret; break; } @@ -1208,8 +1208,7 @@ static int asf_read_multiple_payload(AVFormatContext *s, AVPacket *pkt, return 0; } -static int asf_read_single_payload(AVFormatContext *s, AVPacket *pkt, - ASFPacket *asf_pkt) +static int asf_read_single_payload(AVFormatContext *s, ASFPacket *asf_pkt) { ASFContext *asf = s->priv_data; AVIOContext *pb = s->pb; @@ -1315,7 +1314,7 @@ static int asf_read_payload(AVFormatContext *s, AVPacket *pkt) if ((ret = asf_read_subpayload(s, pkt, 1)) < 0) return ret; } else { -if ((ret = asf_read_single_payload(s, pkt, asf_pkt)) < 0) +if ((ret = asf_read_single_payload(s, asf_pkt)) < 0) return ret; } } else { ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'fa463aa83a4920b0eed47ad1f79775dfc53d21ec'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:48:03 2016 +0100| [774c5357dbe62ba6017ecbe6738a73644cd5bb5d] | committer: Hendrik Leppkes Merge commit 'fa463aa83a4920b0eed47ad1f79775dfc53d21ec' * commit 'fa463aa83a4920b0eed47ad1f79775dfc53d21ec': avpacket: fix size check in packet_alloc Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=774c5357dbe62ba6017ecbe6738a73644cd5bb5d --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avpacket: fix size check in packet_alloc
ffmpeg | branch: master | Andreas Cadhalpun | Tue Jan 5 13:05:50 2016 +0100| [fa463aa83a4920b0eed47ad1f79775dfc53d21ec] | committer: Anton Khirnov avpacket: fix size check in packet_alloc The previous check only caught sizes from -AV_INPUT_BUFFER_PADDING_SIZE to -1. This fixes ubsan runtime error: signed integer overflow: 2147483647 + 32 cannot be represented in type 'int' Signed-off-by: Andreas Cadhalpun Signed-off-by: Anton Khirnov > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fa463aa83a4920b0eed47ad1f79775dfc53d21ec --- libavcodec/avpacket.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 87454d5..3f8e163 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -69,7 +69,7 @@ void av_packet_free(AVPacket **pkt) static int packet_alloc(AVBufferRef **buf, int size) { int ret; -if ((unsigned)size >= (unsigned)size + AV_INPUT_BUFFER_PADDING_SIZE) +if (size < 0 || size >= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) return AVERROR(EINVAL); ret = av_buffer_realloc(buf, size + AV_INPUT_BUFFER_PADDING_SIZE); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '066281372d90d63ca021b659abcb8faefd6bc4a6'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:47:48 2016 +0100| [be3963c8af6e3eeb8ab061dcf2dfd5da158549bf] | committer: Hendrik Leppkes Merge commit '066281372d90d63ca021b659abcb8faefd6bc4a6' * commit '066281372d90d63ca021b659abcb8faefd6bc4a6': asfdec: Remove unused function parameters Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=be3963c8af6e3eeb8ab061dcf2dfd5da158549bf --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] checkasm: Check register clobbering on arm
ffmpeg | branch: master | Martin Storsjö | Wed Dec 30 23:46:06 2015 +0200| [26ec75aec3576daea691dee53a78ec67c0dc4040] | committer: Martin Storsjö checkasm: Check register clobbering on arm Use two separate functions, depending on whether VFP/NEON is available. This is set to require armv5te - it uses blx, which is only available since armv5t, but we don't have a separate configure item for that. (It also uses ldrd, which requires armv5te, but this could be avoided if necessary.) Signed-off-by: Martin Storsjö > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=26ec75aec3576daea691dee53a78ec67c0dc4040 --- tests/checkasm/arm/Makefile |1 + tests/checkasm/arm/checkasm.S | 142 + tests/checkasm/checkasm.c | 11 tests/checkasm/checkasm.h | 13 4 files changed, 167 insertions(+) diff --git a/tests/checkasm/arm/Makefile b/tests/checkasm/arm/Makefile new file mode 100644 index 000..55f2383 --- /dev/null +++ b/tests/checkasm/arm/Makefile @@ -0,0 +1 @@ +CHECKASMOBJS-$(HAVE_ARMV5TE_EXTERNAL) += arm/checkasm.o diff --git a/tests/checkasm/arm/checkasm.S b/tests/checkasm/arm/checkasm.S new file mode 100644 index 000..160dba4 --- /dev/null +++ b/tests/checkasm/arm/checkasm.S @@ -0,0 +1,142 @@ +/ + * Assembly testing and benchmarking tool + * Copyright (c) 2015 Martin Storsjo + * Copyright (c) 2015 Janne Grunau + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA. + */ + +#include "libavutil/arm/asm.S" + +const register_init +.quad 0x21f86d66c8ca00ce +.quad 0x75b6ba21077c48ad +.quad 0xed56bb2dcb3c7736 +.quad 0x8bda43d3fd1a7e06 +.quad 0xb64a9c9e5d318408 +.quad 0xdf9a54b303f1d3a3 +.quad 0x4a75479abd64e097 +.quad 0x249214109d5d1c88 +endconst + +const error_message +.asciz "failed to preserve register" +endconst + +@ max number of args used by any asm function. +#define MAX_ARGS 15 + +#define ARG_STACK 4*(MAX_ARGS - 2) + +.macro clobbercheck variant +.equ pushed, 4*9 +function checkasm_checked_call_\variant, export=1 +push{r4-r11, lr} +.ifc \variant, vfp +vpush {d8-d15} +fmrxr4, FPSCR +push{r4} +.equ pushed, pushed + 16*4 + 4 +.endif + +movrel r12, register_init +.ifc \variant, vfp +vldmr12, {d8-d15} +.endif +ldm r12, {r4-r11} + +sub sp, sp, #ARG_STACK +.equ pos, 0 +.rept MAX_ARGS-2 +ldr r12, [sp, #ARG_STACK + pushed + 8 + pos] +str r12, [sp, #pos] +.equ pos, pos + 4 +.endr + +mov r12, r0 +mov r0, r2 +mov r1, r3 +ldrdr2, r3, [sp, #ARG_STACK + pushed] +blx r12 +add sp, sp, #ARG_STACK + +push{r0, r1} +movrel r12, register_init +mov r3, #0 +.ifc \variant, vfp +.macro check_reg_vfp, dreg, inc=8 +ldrdr0, r1, [r12], #\inc +vmovr2, lr, \dreg +eor r0, r0, r2 +eor r1, r1, lr +orr r3, r3, r0 +orr r3, r3, r1 +.endm + +.irp n, 8, 9, 10, 11, 12, 13, 14 +check_reg_vfp d\n +.endr +check_reg_vfp d15, -56 +.purgem check_reg_vfp + +fmrxr0, FPSCR +ldr r1, [sp, #8] +eor r0, r0, r1 +@ Ignore changes in the topmost 5 bits +lsl r0, r0, #5 +orr r3, r3, r0 +.endif + +.macro check_reg reg1, reg2= +ldrdr0, r1, [r12], #8 +eor r0, r0, \reg1 +orrsr3, r3, r0 +.ifnb \reg2 +eor r1, r1, \reg2 +orrsr3, r3, r1 +.endif +.endm +check_reg r4, r5 +check_reg r6, r7 +@ r9 is a volatile register in the ios ABI +#ifdef __APPLE__ +check_reg r8 +#else +check_reg r8, r9 +#endif +check_reg r10, r11 +.purgem check_reg + +beq 0f + +movrel r0, error_message +blx X(checkasm_fail_func) +0: +pop {r0, r1} +.ifc \variant, vfp +pop {r2} +fmxrFPSCR, r2 +vpop{d8-d15} +.endif +pop {r4-r11, pc} +endfunc +.endm + +#if HAVE_VFP || HAVE_NEON +clo
[FFmpeg-cvslog] Merge commit '26ec75aec3576daea691dee53a78ec67c0dc4040'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:49:27 2016 +0100| [0b40e290e3cc561a92abe09e114b82cbde2eda29] | committer: Hendrik Leppkes Merge commit '26ec75aec3576daea691dee53a78ec67c0dc4040' * commit '26ec75aec3576daea691dee53a78ec67c0dc4040': checkasm: Check register clobbering on arm Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b40e290e3cc561a92abe09e114b82cbde2eda29 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'fec76cd430f3c865183a6e5b4caec0743e055605'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:50:44 2016 +0100| [7e299035268926eced26f442885403edab51e7fc] | committer: Hendrik Leppkes Merge commit 'fec76cd430f3c865183a6e5b4caec0743e055605' * commit 'fec76cd430f3c865183a6e5b4caec0743e055605': checkasm: Check register clobbering on aarch64 Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7e299035268926eced26f442885403edab51e7fc --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] checkasm: Check register clobbering on aarch64
ffmpeg | branch: master | Martin Storsjö | Thu Dec 31 12:20:37 2015 +0200| [fec76cd430f3c865183a6e5b4caec0743e055605] | committer: Martin Storsjö checkasm: Check register clobbering on aarch64 This is disabled on iOS, since iOS uses a slightly different ABI for vararg parameters. Signed-off-by: Martin Storsjö > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fec76cd430f3c865183a6e5b4caec0743e055605 --- tests/checkasm/aarch64/Makefile |1 + tests/checkasm/aarch64/checkasm.S | 148 + tests/checkasm/checkasm.h |4 + 3 files changed, 153 insertions(+) diff --git a/tests/checkasm/aarch64/Makefile b/tests/checkasm/aarch64/Makefile new file mode 100644 index 000..02ba6ca --- /dev/null +++ b/tests/checkasm/aarch64/Makefile @@ -0,0 +1 @@ +CHECKASMOBJS += aarch64/checkasm.o diff --git a/tests/checkasm/aarch64/checkasm.S b/tests/checkasm/aarch64/checkasm.S new file mode 100644 index 000..9668518c --- /dev/null +++ b/tests/checkasm/aarch64/checkasm.S @@ -0,0 +1,148 @@ +/ + * Assembly testing and benchmarking tool + * Copyright (c) 2015 Martin Storsjo + * Copyright (c) 2015 Janne Grunau + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA. + */ + +#include "libavutil/aarch64/asm.S" + +const register_init +.quad 0x21f86d66c8ca00ce +.quad 0x75b6ba21077c48ad +.quad 0xed56bb2dcb3c7736 +.quad 0x8bda43d3fd1a7e06 +.quad 0xb64a9c9e5d318408 +.quad 0xdf9a54b303f1d3a3 +.quad 0x4a75479abd64e097 +.quad 0x249214109d5d1c88 +.quad 0x1a1b2550a612b48c +.quad 0x79445c159ce79064 +.quad 0x2eed899d5a28ddcd +.quad 0x86b2536fcd8cf636 +.quad 0xb0856806085e7943 +.quad 0x3f2bf84fc0fcca4e +.quad 0xacbd382dcf5b8de2 +.quad 0xd229e1f5b281303f +.quad 0x71aeaff20b095fd9 +.quad 0xab63e2e11fa38ed9 +endconst + + +const error_message +.asciz "failed to preserve register" +endconst + + +// max number of args used by any asm function. +#define MAX_ARGS 15 + +#define ARG_STACK ((8*(MAX_ARGS - 7) + 15) & ~15) + +function checkasm_checked_call, export=1 +stp x29, x30, [sp, #-16]! +mov x29, sp +stp x19, x20, [sp, #-16]! +stp x21, x22, [sp, #-16]! +stp x23, x24, [sp, #-16]! +stp x25, x26, [sp, #-16]! +stp x27, x28, [sp, #-16]! +stp d8, d9, [sp, #-16]! +stp d10, d11, [sp, #-16]! +stp d12, d13, [sp, #-16]! +stp d14, d15, [sp, #-16]! + +movrel x9, register_init +ldp d8, d9, [x9], #16 +ldp d10, d11, [x9], #16 +ldp d12, d13, [x9], #16 +ldp d14, d15, [x9], #16 +ldp x19, x20, [x9], #16 +ldp x21, x22, [x9], #16 +ldp x23, x24, [x9], #16 +ldp x25, x26, [x9], #16 +ldp x27, x28, [x9], #16 + +sub sp, sp, #ARG_STACK +.equ pos, 0 +// the first stacked arg is copied to x7 +.rept MAX_ARGS-7 +ldr x9, [x29, #16 + 8 + pos] +str x9, [sp, #pos] +.equ pos, pos + 8 +.endr + +mov x12, x0 +mov x0, x1 +mov x1, x2 +mov x2, x3 +mov x3, x4 +mov x4, x5 +mov x5, x6 +mov x6, x7 +ldr x7, [x29, #16] +blr x12 +add sp, sp, #ARG_STACK +stp x0, x1, [sp, #-16]! +movrel x9, register_init +moviv3.8h, #0 + +.macro check_reg_neon reg1, reg2 +ldr q0, [x9], #16 +uzp1v1.2d, v\reg1\().2d, v\reg2\().2d +eor v0.16b, v0.16b, v1.16b +orr v3.16b, v3.16b, v0.16b +.endm +check_reg_neon 8, 9 +check_reg_neon 10, 11 +check_reg_neon 12, 13 +check_reg_neon 14, 15 +uqxtn v3.8b, v3.8h +umovx3, v3.d[0] + +.macro check_reg reg1, reg2 +ldp x0, x1, [x9], #16 +eor x0, x0, \reg1 +eor x1, x1, \reg2 +orr x3, x3, x0 +orr x3, x3, x1 +.endm +check_reg x19, x20 +check_reg x21, x22 +check_reg x23, x24 +
[FFmpeg-cvslog] Merge commit '73c8c0341cce9e1a6c4169721f5123f97fc4be2f'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:51:12 2016 +0100| [a04a9434b5ecfa0f17a36f88ac3e2634143a0169] | committer: Hendrik Leppkes Merge commit '73c8c0341cce9e1a6c4169721f5123f97fc4be2f' * commit '73c8c0341cce9e1a6c4169721f5123f97fc4be2f': arm: Fix vfp dead code elimination with have_vfp_vm Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a04a9434b5ecfa0f17a36f88ac3e2634143a0169 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] arm: Fix vfp dead code elimination with have_vfp_vm
ffmpeg | branch: master | Martin Storsjö | Thu Jan 7 15:06:49 2016 +0200| [73c8c0341cce9e1a6c4169721f5123f97fc4be2f] | committer: Martin Storsjö arm: Fix vfp dead code elimination with have_vfp_vm This fixes builds with --disable-vfp. Checking for the armv6 cpu flag is incorrect, since vfpv2 isn't armv6 specific. Signed-off-by: Martin Storsjö > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=73c8c0341cce9e1a6c4169721f5123f97fc4be2f --- libavutil/arm/cpu.h |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/arm/cpu.h b/libavutil/arm/cpu.h index 5563fc1..127993e 100644 --- a/libavutil/arm/cpu.h +++ b/libavutil/arm/cpu.h @@ -33,7 +33,7 @@ /* some functions use the VFPv2 vector mode which is deprecated in ARMv7-A * and might trap on such CPU depending on the OS configuration */ #define have_vfp_vm(flags) \ -(have_armv6(flags) && ((flags) & AV_CPU_FLAG_VFP_VM)) +(HAVE_VFP && ((flags) & AV_CPU_FLAG_VFP_VM)) /* Some functions use the 'setend' instruction which is deprecated on ARMv8 * and serializing on some ARMv7 cores. This macro ensures such functions ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '40d43d25e76ca078e7665752e815fc8d96252f06'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:53:43 2016 +0100| [fea9243d53e0e281450e39ec0e1b4b3c122a8a29] | committer: Hendrik Leppkes Merge commit '40d43d25e76ca078e7665752e815fc8d96252f06' * commit '40d43d25e76ca078e7665752e815fc8d96252f06': APIchanges: Add missing av_pix_fmt_get_chroma_sub_sample entry Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fea9243d53e0e281450e39ec0e1b4b3c122a8a29 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] APIchanges: Add missing av_pix_fmt_get_chroma_sub_sample entry
ffmpeg | branch: master | Luca Barbato | Mon Jan 11 20:51:51 2016 +0100| [40d43d25e76ca078e7665752e815fc8d96252f06] | committer: Luca Barbato APIchanges: Add missing av_pix_fmt_get_chroma_sub_sample entry > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=40d43d25e76ca078e7665752e815fc8d96252f06 --- doc/APIchanges |6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index a55fbca..ffa270e 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -576,8 +576,10 @@ lavd 54.0.0, lavfi 3.5.0 9 branch was cut here ->8-- -2012-12-29 - d8fd06c - lavu 52.3.0 - avstring.h - Add av_basename() and av_dirname(). +2012-12-29 - lavu 52.3.0 + d8fd06c - Add av_basename() and av_dirname(). + c1a02e8 - Add av_pix_fmt_get_chroma_sub_sample and deprecate +avcodec_get_chroma_sub_sample. 2012-11-11 - 5980f5d - lavu 52.2.0 - audioconvert.h Rename audioconvert.h to channel_layout.h. audioconvert.h is now deprecated. ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] asfdec: Fix typo in comment
ffmpeg | branch: master | Alexandra Hájková | Sat Jan 9 19:35:28 2016 +0100| [34d45b36164eee044cfe55d22488b2b65e387872] | committer: Luca Barbato asfdec: Fix typo in comment Signed-off-by: Luca Barbato > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=34d45b36164eee044cfe55d22488b2b65e387872 --- libavformat/asfdec.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index b33677a..90a1df4 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -1218,7 +1218,7 @@ static int asf_read_single_payload(AVFormatContext *s, ASFPacket *asf_pkt) int ret, data_size; if (!asf_pkt->data_size) { -data_size = avio_rl32(pb); // read media objectgg size +data_size = avio_rl32(pb); // read media object size if (data_size <= 0) return AVERROR_EOF; if ((ret = av_new_packet(&asf_pkt->avpkt, data_size)) < 0) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '34d45b36164eee044cfe55d22488b2b65e387872'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:53:58 2016 +0100| [25955c927fcf88d1deea16f2d4ff86eb5a78a774] | committer: Hendrik Leppkes Merge commit '34d45b36164eee044cfe55d22488b2b65e387872' * commit '34d45b36164eee044cfe55d22488b2b65e387872': asfdec: Fix typo in comment Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=25955c927fcf88d1deea16f2d4ff86eb5a78a774 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '7570c9e04f010c9b3bfdeb4338d330f2cdd25278'
ffmpeg | branch: master | Hendrik Leppkes | Tue Jan 19 08:58:55 2016 +0100| [e816fe7401c900146d5230855a676f689136b884] | committer: Hendrik Leppkes Merge commit '7570c9e04f010c9b3bfdeb4338d330f2cdd25278' * commit '7570c9e04f010c9b3bfdeb4338d330f2cdd25278': swfdec: support compressed swf Merged-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e816fe7401c900146d5230855a676f689136b884 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog