From patchwork Thu Oct 27 06:16:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rodger Combs X-Patchwork-Id: 1200 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.133 with SMTP id o127csp409507vsd; Wed, 26 Oct 2016 23:31:09 -0700 (PDT) X-Received: by 10.194.78.42 with SMTP id y10mr5164538wjw.104.1477549869164; Wed, 26 Oct 2016 23:31:09 -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 j10si6610018wjn.115.2016.10.26.23.31.08; Wed, 26 Oct 2016 23:31:09 -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 4FFAF689E81; Thu, 27 Oct 2016 09:31:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi0-f66.google.com (mail-oi0-f66.google.com [209.85.218.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3276E689BF5 for ; Thu, 27 Oct 2016 09:30:54 +0300 (EEST) Received: by mail-oi0-f66.google.com with SMTP id e12so2896806oib.3 for ; Wed, 26 Oct 2016 23:30:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=UDYc0Qy10wybBhZjGka8thvnfe6+uekib8dknQC5Ih8=; b=R4XGUAu7CDMira0SIfi573yi+MCK81dL/Dvc4tTX1q6rUF4BzoIgwgOxZ4Wh23G0Ut tiUyvVxPPRXfhBupYOTC7rDOTWui8T1loi4S7kbYgR3L3VYu5+qX4aXz+LNdGtPddpW1 GzOoPUwNdvcOTTaW7CAxjBbr6ir9B0n5CeHd2OTEj/hiwCIxTJ6PvEYGT1CH5ff5qpki ZkfCnpVLsDfvqiyQE7yY3n2c7mmqWBFSfg/C7jEFXzOox88aKoJ2Rr1p+khWjxn1rKuN v3jo+ijAYXPmIS59eRnV3eOt3OonkB/DevLwgbXhvvvjtYrmiXRHxOgMdPKkIoPkshMt MXvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=UDYc0Qy10wybBhZjGka8thvnfe6+uekib8dknQC5Ih8=; b=FPwTJN+V1uSUhAqrCHuxt2hTraNbUkqPSHkuPgXx12RfEdhn/1Vax3hi0rMpz7peBP f5N2IYawiKYKsh12BVpvdUXOkSvcgaJjLeFo8a3G6XifZnI1BD9qWIUbr+5MNpp+FyTV dwS4RuzjwYQd+tDBasyuKE1xlPJf0+HYfO2AyvxStVWfNL+ei8RPGwQ45UYLFHp85FlX YT2sV5EJk6TsaLnMwhUFqZNdsCDOy8hizBh8ytogHkxm+DmIRQ/gzsa2soq80CsRSNXA I63jVRpPFvg5FDdcsZWVSWsG9svwTl04oRqJla9H5teY5SijfasuKFDyPbfi77+kQZX6 mDAA== X-Gm-Message-State: ABUngvfRBGXU4KGSMM0HHvzCa1TxzF30QRj3p/qWQFaR18WwEP7TM/f9NDQI17F39gPTyg== X-Received: by 10.36.2.196 with SMTP id 187mr5192995itu.120.1477548979399; Wed, 26 Oct 2016 23:16:19 -0700 (PDT) Received: from Rodgers-MacBook-Pro.local.net (c-73-209-137-129.hsd1.il.comcast.net. [73.209.137.129]) by smtp.gmail.com with ESMTPSA id 65sm479511itg.19.2016.10.26.23.16.18 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 26 Oct 2016 23:16:18 -0700 (PDT) From: Rodger Combs To: ffmpeg-devel@ffmpeg.org Date: Thu, 27 Oct 2016 01:16:10 -0500 Message-Id: <20161027061613.44001-1-rodger.combs@gmail.com> X-Mailer: git-send-email 2.10.0 Subject: [FFmpeg-devel] [PATCH 1/4] lavf/segment: fix autobsf 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" --- libavformat/segment.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/libavformat/segment.c b/libavformat/segment.c index 868f0a8..9b3dc17 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -798,9 +798,26 @@ static int seg_write_header(AVFormatContext *s) { SegmentContext *seg = s->priv_data; AVFormatContext *oc = seg->avf; - int ret; + int ret, i; if (!seg->header_written) { + for (i = 0; i < s->nb_streams; i++) { + AVStream *st = oc->streams[i]; + AVCodecParameters *ipar, *opar; + + ipar = s->streams[i]->codecpar; + opar = oc->streams[i]->codecpar; + avcodec_parameters_copy(opar, ipar); + if (!oc->oformat->codec_tag || + av_codec_get_id (oc->oformat->codec_tag, ipar->codec_tag) == opar->codec_id || + av_codec_get_tag(oc->oformat->codec_tag, ipar->codec_id) <= 0) { + opar->codec_tag = ipar->codec_tag; + } else { + opar->codec_tag = 0; + } + st->sample_aspect_ratio = s->streams[i]->sample_aspect_ratio; + st->time_base = s->streams[i]->time_base; + } ret = avformat_write_header(oc, NULL); if (ret < 0) return ret; @@ -978,6 +995,25 @@ fail: return ret; } +static int seg_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) +{ + SegmentContext *seg = s->priv_data; + AVFormatContext *oc = seg->avf; + if (oc->oformat->check_bitstream) { + int ret = oc->oformat->check_bitstream(oc, pkt); + if (ret == 1) { + AVStream *st = s->streams[pkt->stream_index]; + AVStream *ost = oc->streams[pkt->stream_index]; + st->internal->bsfcs = ost->internal->bsfcs; + st->internal->nb_bsfcs = ost->internal->nb_bsfcs; + ost->internal->bsfcs = NULL; + ost->internal->nb_bsfcs = 0; + } + return ret; + } + return 1; +} + #define OFFSET(x) offsetof(SegmentContext, x) #define E AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { @@ -1041,6 +1077,7 @@ AVOutputFormat ff_segment_muxer = { .write_packet = seg_write_packet, .write_trailer = seg_write_trailer, .deinit = seg_free, + .check_bitstream = seg_check_bitstream, .priv_class = &seg_class, }; @@ -1061,5 +1098,6 @@ AVOutputFormat ff_stream_segment_muxer = { .write_packet = seg_write_packet, .write_trailer = seg_write_trailer, .deinit = seg_free, + .check_bitstream = seg_check_bitstream, .priv_class = &sseg_class, };