From patchwork Tue Sep 13 14:10:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Liu X-Patchwork-Id: 563 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp2160035vsd; Tue, 13 Sep 2016 07:10:54 -0700 (PDT) X-Received: by 10.194.161.197 with SMTP id xu5mr24177613wjb.88.1473775854011; Tue, 13 Sep 2016 07:10:54 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id il10si16118642wjb.97.2016.09.13.07.10.50; Tue, 13 Sep 2016 07:10:53 -0700 (PDT) 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 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 5CC4E689FA1; Tue, 13 Sep 2016 17:10:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2C514689CBA for ; Tue, 13 Sep 2016 17:10:30 +0300 (EEST) Received: by mail-qk0-f193.google.com with SMTP id b204so4672161qkc.1 for ; Tue, 13 Sep 2016 07:10:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=MHcqlXOl7a5o6XPipclx0bDbglZJcH+eaBCW9EuOv/A=; b=uCtXr+9C/QpIsqxyJo1+XEX0G2qOhntYxL3Nyu1ahNT4b4gXJC0q9HmT9zRAT146co 3dxYEcE2Q2twwX5vNcuT2EXFpB6WbQFHn16c4HUH2GCsyvjKayvjG/ZRdigxrOUkroHg ZmqV8ydL755qW5LNcH9zvtfXhy5dwR9sKd3fQgH939DUVhmRpRX8C1PgCTDWhu9nOlhQ eAZDJWoW4+mS9v3aTyWbU+4gu/AYtAqeGL48W0BWmrM8lC+soLw+yJ0L8/zLsnEUyr8u hAFYQZyyUqLiW5WQC0esfqdQSE6DLXSEVeFah/4GMuZkThp9Y0UsSynldde9RYaClyIs 8HXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=MHcqlXOl7a5o6XPipclx0bDbglZJcH+eaBCW9EuOv/A=; b=QJtziOPufKw0A9bT3tdiLpHROlEWPrVgxBy2CZDsiQiyc7yALb2BNXt8lP+6q3o3+e Z8Ji/1fyBo8PLXecv2Xa5926bqig11ccZiIxQvRkMtY/FeW54/K0LNz0Gpf1UIi3VoB/ E2dZwblxNBMuM41XMqE067s7Kr/V+kV4y6gXecaDX1JFYv6/KzAQ60E+LGva4lMNH32Y +QFkm2ZZDM7KwGDenEj0uL3u4oNT41mlQi6bPiAJ4ipJg6zks87Rtbbo7lHIzyihWQzK zWPkMEDxbw/u1QJEccP5Do4KazxYYJ6k07GhmjQUVtFn4u+aeHmT6FKlH7KRrPVUrbor OQtg== X-Gm-Message-State: AE9vXwOhvaKfqQPs2B4STzfOrikem446Y3gbzLCJ37ZAX7GN7vYjZMHSGL3okhEwmhver4Br+e73Z2gdAXbBlg== X-Received: by 10.55.212.77 with SMTP id l74mr1173054qki.231.1473775841224; Tue, 13 Sep 2016 07:10:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.237.56.42 with HTTP; Tue, 13 Sep 2016 07:10:40 -0700 (PDT) From: Steven Liu Date: Tue, 13 Sep 2016 22:10:40 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/flvenc: add no_sequence_end flags for flvflags 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" when split flv file by flv format at first, and cat flvs file into one flv file, the flv sequence end is be used, then the whole flv have many flv sequence end TAG. this flags can give user an option to ignore write sequence end TAG Signed-off-by: Steven Liu --- libavformat/flvenc.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) file_size = avio_tell(pb); @@ -723,6 +726,7 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt) static const AVOption options[] = { { "flvflags", "FLV muxer flags", offsetof(FLVContext, flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "flvflags" }, { "aac_seq_header_detect", "Put AAC sequence header based on stream data", 0, AV_OPT_TYPE_CONST, {.i64 = FLV_AAC_SEQ_HEADER_DETECT}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "flvflags" }, + { "no_sequence_end", "disable sequence end for FLV", 0, AV_OPT_TYPE_CONST, {.i64 = FLV_NO_SEQUENCE_END}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "flvflags" }, { NULL }, }; -- 2.7.4 (Apple Git-66) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index a3623f8..9e95b8d 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -63,6 +63,7 @@ static const AVCodecTag flv_audio_codec_ids[] = { typedef enum { FLV_AAC_SEQ_HEADER_DETECT = (1 << 0), + FLV_NO_SEQUENCE_END = (1 << 1), } FLVFlags; typedef struct FLVContext { @@ -527,13 +528,15 @@ static int flv_write_trailer(AVFormatContext *s) FLVContext *flv = s->priv_data; int i; - /* Add EOS tag */ - for (i = 0; i < s->nb_streams; i++) { - AVCodecParameters *par = s->streams[i]->codecpar; - FLVStreamContext *sc = s->streams[i]->priv_data; - if (par->codec_type == AVMEDIA_TYPE_VIDEO && - (par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_MPEG4)) - put_avc_eos_tag(pb, sc->last_ts); + if (flv->flags & FLV_NO_SEQUENCE_END == 0) { + /* Add EOS tag */ + for (i = 0; i < s->nb_streams; i++) { + AVCodecParameters *par = s->streams[i]->codecpar; + FLVStreamContext *sc = s->streams[i]->priv_data; + if (par->codec_type == AVMEDIA_TYPE_VIDEO && + (par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_MPEG4)) + put_avc_eos_tag(pb, sc->last_ts); + } }