From patchwork Sat Jan 28 15:23:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muhammad Faiz X-Patchwork-Id: 2348 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp727824vsb; Sat, 28 Jan 2017 07:34:25 -0800 (PST) X-Received: by 10.28.31.130 with SMTP id f124mr3787682wmf.130.1485617665576; Sat, 28 Jan 2017 07:34:25 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i132si6826530wmg.30.2017.01.28.07.34.25; Sat, 28 Jan 2017 07:34:25 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AD84F68A35C; Sat, 28 Jan 2017 17:34:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f67.google.com (mail-pg0-f67.google.com [74.125.83.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8741E689E46 for ; Sat, 28 Jan 2017 17:34:14 +0200 (EET) Received: by mail-pg0-f67.google.com with SMTP id 194so27484609pgd.0 for ; Sat, 28 Jan 2017 07:34:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=uReNQCUGoP+ygH3luJGj5L1+s9x7BB9ZiPbr0Rs0Yhg=; b=UJ0Aq040iWHvIHnSFqZ3DKLfNevXds0WYrqzT8Yh4YsQvvQK94ye7248TOxcraikg0 Bzq+luteBmWOQPqV9KWosG+mVf/IxqGCliQDb5PZoOKFAtwnF/OZNtbCOQmn1RYqLYpd vQJrS6vStjYEatgEOpGRXzlVzELRRgotb2ulvEeh22QYi3wYJ9YX0VQ78uTMB89mHZQC lSzoaySPx+dDwIn1hJ2JSZc8yI88DMZCJuOByrIy8MXjZtrwLiG1rNzl2ycQoHg7M+3w sGmOmP59LlH+tBY7wUvDIi9R4ulqdUpuove5v/nVYWOFeBdhjucOUsHMC29s0hQdb0fy 0Ejg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=uReNQCUGoP+ygH3luJGj5L1+s9x7BB9ZiPbr0Rs0Yhg=; b=I7FvpX+CkKzxIWV0SodPkrICMz+Hra7xUbRuAO+/Iho4amtXni9o1D/pedUak72L0w FT7OBohCu8HvWV2jQLLlLJ59ZML6KYqIZ7LfwVqKGE+leyC3Q+Mq0+FDpZehb2cl83la 6o/ziLav/1EmlMEz5O1OoCKbRjckFYO6VA7W+YRa7kZJm9sd+P5oBrhWeMIRLjV5mauD 3PnBoM215URAcF9ffMsvW3gmLoq6C+TEoFyvCFTvkjrQdDPwqRBmHcY6wtuaEICZZ2jU TZf4KSxAtHg6Lp4QKt2v7+icjIKs7cLWCJ4iz202ro/AYTBsB3rK/knDkrRgA7XAP+Ds IHXA== X-Gm-Message-State: AIkVDXJR/SakdSK2lq045+p3nvrHcrWUVWFsdMFLuGJFVNV682ECnONncAmduW4pJRUEiQ== X-Received: by 10.84.253.23 with SMTP id z23mr20238595pll.0.1485617171163; Sat, 28 Jan 2017 07:26:11 -0800 (PST) Received: from localhost.localdomain.localdomain ([202.67.46.251]) by smtp.gmail.com with ESMTPSA id f3sm19842092pga.34.2017.01.28.07.26.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Jan 2017 07:26:10 -0800 (PST) From: Muhammad Faiz To: ffmpeg-devel@ffmpeg.org Date: Sat, 28 Jan 2017 22:23:53 +0700 Message-Id: <1485617034-31431-1-git-send-email-mfcc64@gmail.com> X-Mailer: git-send-email 2.5.0 Subject: [FFmpeg-devel] [PATCH 1/2] avfilter: change ff_inlink_make_frame_writable() to take AVFrame* argument X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Muhammad Faiz MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" so the behavior will be similar to av_frame_make_writable(). Also use av_frame_copy() replacing av_image_copy()/av_samples_copy(). Needed for the next patch. Suggested-by: wm4 Signed-off-by: Muhammad Faiz --- libavfilter/avfilter.c | 26 ++++++-------------------- libavfilter/filters.h | 2 +- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index c12d491..c8dafd2 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -1104,7 +1104,7 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame) filter_frame = default_filter_frame; if (dst->needs_writable) { - ret = ff_inlink_make_frame_writable(link, &frame); + ret = ff_inlink_make_frame_writable(link, frame); if (ret < 0) goto fail; } @@ -1556,9 +1556,8 @@ int ff_inlink_consume_samples(AVFilterLink *link, unsigned min, unsigned max, return 1; } -int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe) +int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame *frame) { - AVFrame *frame = *rframe; AVFrame *out; int ret; @@ -1585,23 +1584,10 @@ int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe) return ret; } - switch (link->type) { - case AVMEDIA_TYPE_VIDEO: - av_image_copy(out->data, out->linesize, (const uint8_t **)frame->data, frame->linesize, - frame->format, frame->width, frame->height); - break; - case AVMEDIA_TYPE_AUDIO: - av_samples_copy(out->extended_data, frame->extended_data, - 0, 0, frame->nb_samples, - av_frame_get_channels(frame), - frame->format); - break; - default: - av_assert0(!"reached"); - } - - av_frame_free(&frame); - *rframe = out; + av_frame_copy(out, frame); + av_frame_unref(frame); + av_frame_move_ref(frame, out); + av_frame_free(&out); return 0; } diff --git a/libavfilter/filters.h b/libavfilter/filters.h index 2c78d60..5d32403 100644 --- a/libavfilter/filters.h +++ b/libavfilter/filters.h @@ -101,7 +101,7 @@ int ff_inlink_consume_samples(AVFilterLink *link, unsigned min, unsigned max, * This is similar to av_frame_make_writable() except it uses the link's * buffer allocation callback, and therefore allows direct rendering. */ -int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe); +int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame *frame); /** * Test and acknowledge the change of status on the link.