From patchwork Fri Nov 24 03:38:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 6323 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp1594142jah; Thu, 23 Nov 2017 19:39:46 -0800 (PST) X-Google-Smtp-Source: AGs4zMbuTU6IJfzG9u4fHYtrdI+pugxYWF8MyvU00CEIzA1QSMm91ibewYseLXI5ljR6dwQIMRSg X-Received: by 10.223.167.70 with SMTP id e6mr2205287wrd.235.1511494786798; Thu, 23 Nov 2017 19:39:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511494786; cv=none; d=google.com; s=arc-20160816; b=KUoM8PvyLDUVLBfk7kzTsHLJqlvbPPIk5fiz/owLdgZK563wolJmCrC2Yfm0jT7d0/ otNGuN8hZUuCrxx5VhXz6287/2m/BBxL8K598iatL0QPATryk6Z+XukBNDsSV6uA2la7 iCDztQXoo72aCz1t6oGs2MAhsAwOvGOJL+udb55lA2WaroNVLFnWKdBU10mJy7vPYmnH FQpQDbuu2UwNITZeS510+X75HRxgzRAzs+0+pBKQTPiBfLbDya4b2Y9cQX/rcXL0IDD2 U39nZfWmubYgzxEjz3JFZtRUD01QgloHDV6tiWFamhQ2BnGCE186vC1CkVn/NcypJwgz 4yIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=q3vmOweCdOKxZxP1yF/NKR331JaF4lFsdi/qb4iymA0=; b=IwE/FlgjoTQoqEjE1igOKv+pzFBYxcugDe7+ocG46xYrtDKatLk3cRMzZmsILynOjR EJ3+13QI3CxXJdgUdyJw+YpxEZlRlSNj041hGc7PK5vAEL9xCHBSdofkmHxbmC5icwpF 7TYX8oj5a3IbdPur2+c1e5WX9HeyZdDYbxN17IrnkBbWAsFBPqf4OssY9aPWkUl7V787 ogyfIDpQN7DTuKpvtHIoj10IL3OWqnEezy3pNeca/0CkT15lY/fA32pbBl/XhEoJu62I mWfzhDwwVNrM9ZXz1Yx+sCk053kOdpawr6qTILCRESUpiy47BDyWgdXIOFlz4Lpc7h8a +J4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=cEa8Lcov; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w7si6298237wme.19.2017.11.23.19.39.45; Thu, 23 Nov 2017 19:39:46 -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 header.s=20161025 header.b=cEa8Lcov; 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 891B968A156; Fri, 24 Nov 2017 05:39:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB8AD68A109 for ; Fri, 24 Nov 2017 05:39:36 +0200 (EET) Received: by mail-qk0-f196.google.com with SMTP id 78so23076863qkz.0 for ; Thu, 23 Nov 2017 19:39:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=Qe9Z5amZIlyBaN1N98wLObM5CR2kud1elvN3SrkCyFY=; b=cEa8Lcov8pQNyzEOpEG0AZaV/s1RfinaAspspYRIg+sBOeDLfb7lT+RSoKTjhIuleh yy8Bf70acpggoAOD2252JRAFRGwtJMyYzXf6/jw4oIdPseKpETmSwzcKdBvbxylQeGpW jB/jO4cZSVeSET9drk+vGZ+d7YbAS+BdtTJmMuHlNWTKyjhrjXBcoB0ttEdrc1je1NTa aQJ6zhPRDwE5QNGc7whaeIO+GtboWQ+YFap5uJM4+QOSyoVebSyAgFgMVU1Lw6nKe+Aq jUp7PX/5ZPbkSF6KjivmUU357DIQGyJFz7FQC5OHY72Ifm8//khZ2JhWZeG3DKdQ59ut 1sBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=Qe9Z5amZIlyBaN1N98wLObM5CR2kud1elvN3SrkCyFY=; b=f9shebJj/GzgfV/FJEZQwvBfpBwowOIHxMfdYR95FbPPrIqCMsXnFEYmxVeE3pzc8i kA34sJD/r0xhnhS4W+q89KfuDCmh8FNhL2cKoiTnXFlJNstgUewtQuWAr99dYZt5ShTE /E6QEyfyAVVN4yVi1g6M22tG/Sya0m0xxvHZ79pgo+ni8Tu2LyzmpqeNPHxgxuGEXtXY wZh5ArNdcSyJHgsCQKkD4Fvq6FJEBEJ1ZtGFa5fkIxGJTTvBs/SqnNS/awUy5weJ5TI6 JOZnuidhHFoA98dXZn4Qm3XUV5DLSiQUxuyhV7gIOcMekb290eqBdsaw18FBYdXJjefV DKJQ== X-Gm-Message-State: AJaThX7uI2oAkAVgSCA5eiXANrpSuB3NGaE6bJjahvnhnt+09a55mtLV vCbXGFDlTgA+Rzxj5zQ9YerAxg== X-Received: by 10.55.124.7 with SMTP id x7mr38150166qkc.54.1511494776348; Thu, 23 Nov 2017 19:39:36 -0800 (PST) Received: from localhost.localdomain ([181.231.59.220]) by smtp.gmail.com with ESMTPSA id a72sm13624720qkc.60.2017.11.23.19.39.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 23 Nov 2017 19:39:35 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Nov 2017 00:38:25 -0300 Message-Id: <20171124033825.2616-1-jamrial@gmail.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171123220843.804-2-jamrial@gmail.com> References: <20171123220843.804-2-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2 v2] avformat/flacenc: add flac_init() and flac_deinit() 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- Simpler/smaller diff. libavformat/flacenc.c | 50 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c index 84da54a1df..d5fcf96b6b 100644 --- a/libavformat/flacenc.c +++ b/libavformat/flacenc.c @@ -197,11 +197,11 @@ static int flac_finish_header(struct AVFormatContext *s) return 0; } -static int flac_write_header(struct AVFormatContext *s) +static int flac_init(struct AVFormatContext *s) { AVCodecParameters *par; FlacMuxerContext *c = s->priv_data; - int ret, i; + int i; c->audio_stream_idx = -1; for (i = 0; i < s->nb_streams; i++) { @@ -233,14 +233,6 @@ static int flac_write_header(struct AVFormatContext *s) if (c->nb_pics && !(c->pics = av_calloc(c->nb_pics, sizeof(AVPacket)))) return AVERROR(ENOMEM); - if (!c->write_header) - return 0; - - ret = ff_flac_write_header(s->pb, par->extradata, - par->extradata_size, 0); - if (ret) - return ret; - /* add the channel layout tag */ if (par->channel_layout && !(par->channel_layout & ~0x3ffffULL) && @@ -258,6 +250,23 @@ static int flac_write_header(struct AVFormatContext *s) } } + return 0; +} + +static int flac_write_header(struct AVFormatContext *s) +{ + FlacMuxerContext *c = s->priv_data; + AVCodecParameters *par = s->streams[c->audio_stream_idx]->codecpar; + int ret; + + if (!c->write_header) + return 0; + + ret = ff_flac_write_header(s->pb, par->extradata, + par->extradata_size, 0); + if (ret < 0) + return ret; + if (!c->waiting_pics) ret = flac_finish_header(s); @@ -313,7 +322,6 @@ static int flac_write_trailer(struct AVFormatContext *s) FlacMuxerContext *c = s->priv_data; uint8_t *streaminfo = c->streaminfo ? c->streaminfo : s->streams[c->audio_stream_idx]->codecpar->extradata; - int i; if (c->waiting_pics) { av_log(s, AV_LOG_WARNING, "No packets were sent for some of the " @@ -321,10 +329,6 @@ static int flac_write_trailer(struct AVFormatContext *s) flac_queue_flush(s); } - for (i = 0; i < c->nb_pics; i++) - av_packet_unref(&c->pics[i]); - av_freep(&c->pics); - if (!c->write_header || !streaminfo) return 0; @@ -339,11 +343,21 @@ static int flac_write_trailer(struct AVFormatContext *s) av_log(s, AV_LOG_WARNING, "unable to rewrite FLAC header.\n"); } - av_freep(&c->streaminfo); - return 0; } +static void flac_deinit(struct AVFormatContext *s) +{ + FlacMuxerContext *c = s->priv_data; + int i; + + for (i = 0; i < c->nb_pics; i++) + av_packet_unref(&c->pics[i]); + av_freep(&c->pics); + + av_freep(&c->streaminfo); +} + static int flac_write_packet(struct AVFormatContext *s, AVPacket *pkt) { FlacMuxerContext *c = s->priv_data; @@ -420,9 +434,11 @@ AVOutputFormat ff_flac_muxer = { .extensions = "flac", .audio_codec = AV_CODEC_ID_FLAC, .video_codec = AV_CODEC_ID_PNG, + .init = flac_init, .write_header = flac_write_header, .write_packet = flac_write_packet, .write_trailer = flac_write_trailer, + .deinit = flac_deinit, .flags = AVFMT_NOTIMESTAMPS, .priv_class = &flac_muxer_class, };