[FFmpeg-devel] [PATCH] lavfi: Port fspp to FFmpeg
Michael Niedermayer
michaelni at gmx.at
Tue Dec 16 01:36:58 CET 2014
On Mon, Dec 15, 2014 at 10:55:26PM +0530, arwa arif wrote:
> This patch seems to be working. Sorry for the previous one.
> doc/filters.texi | 24
> libavfilter/Makefile | 1
> libavfilter/allfilters.c | 1
> libavfilter/libmpcodecs/vf_fspp.c | 4
> libavfilter/version.h | 2
> libavfilter/vf_fspp.c | 400 ++++++++++
> libavfilter/vf_fspp.h | 352 +++++++++
> libavfilter/x86/Makefile | 1
> libavfilter/x86/vf_fspp.c | 1391 ++++++++++++++++++++++++++++++++++++++
> 9 files changed, 2173 insertions(+), 3 deletions(-)
> d945d17d2227a2628acbcba387267734c3914841 0001-Port-fspp-to-FFmpeg.patch
> From 97d90c5a1a8c10a1b19a5250c90d02fb74e79735 Mon Sep 17 00:00:00 2001
> From: Arwa Arif <arwaarif1994 at gmail.com>
> Date: Sun, 14 Dec 2014 12:03:31 +0530
> Subject: [PATCH] Port fspp to FFmpeg
[...]
> + if (fspp->log2_count && !ctx->is_disabled) {
> + if (!fspp->use_bframe_qp && fspp->non_b_qp_table)
> + qp_table = fspp->non_b_qp_table;
> +
> + if (qp_table || fspp->qp) {
> +
> + /* get a new frame if in-place is not possible or if the dimensions
> + * are not multiple of 8 */
> + if (!av_frame_is_writable(in) || (inlink->w & 7) || (inlink->h & 7)) {
> + const int aligned_w = FFALIGN(inlink->w, 8);
> + const int aligned_h = FFALIGN(inlink->h, 8);
> +
> + out = ff_get_video_buffer(outlink, aligned_w, aligned_h);
> + if (!out) {
> + av_frame_free(&in);
> + return AVERROR(ENOMEM);
> + }
> + av_frame_copy_props(out, in);
> + out->width = in->width;
> + out->height = in->height;
> + }
> +
> + filter(fspp , out->data[0] , in->data[0] , out->linesize[0] , in->linesize[0] ,
> + inlink->w , inlink->h , qp_table , qp_stride , 1);
> + filter(fspp , out->data[1] , in->data[1] , out->linesize[1] , in->linesize[1] ,
> + inlink->w , inlink->h , qp_table , qp_stride , 0);
> + filter(fspp , out->data[2] , in->data[2] , out->linesize[2] , in->linesize[2] ,
> + inlink->w , inlink->h , qp_table , qp_stride , 0);
the 2 chroma planes are smaller than luma, thus
"inlink->w , inlink->h" is wrong for them
you can calculate the sizes of the chroma plane with
log2_chroma_w and log2_chroma_h from av_pix_fmt_desc_get()
see similar code in other filters
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
No human being will ever know the Truth, for even if they happen to say it
by chance, they would not even known they had done so. -- Xenophanes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20141216/08f993d0/attachment.asc>
More information about the ffmpeg-devel
mailing list