From patchwork Thu Sep 8 13:33:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Liu X-Patchwork-Id: 476 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp832104vsd; Thu, 8 Sep 2016 06:33:17 -0700 (PDT) X-Received: by 10.194.89.9 with SMTP id bk9mr14812335wjb.185.1473341597013; Thu, 08 Sep 2016 06:33:17 -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 b84si8772679wmc.64.2016.09.08.06.33.16; Thu, 08 Sep 2016 06:33:16 -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 21C86689DCB; Thu, 8 Sep 2016 16:33:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f181.google.com (mail-qt0-f181.google.com [209.85.216.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3DADF689D63 for ; Thu, 8 Sep 2016 16:32:57 +0300 (EEST) Received: by mail-qt0-f181.google.com with SMTP id l91so6042599qte.3 for ; Thu, 08 Sep 2016 06:33:07 -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=PhQOk6s89VJTqvadnBtQOzaVsU3U5YENKrUJWPx0m8Q=; b=t9jNYUeBQAbTsYniewteTc+WD7+iebCbxfZBn1oqSoV06so+FtzEgQCxCpBIOBz4vq DRre3EnJLEpbDlqW5pfxWGU31Yr+CiORppJs9VWDLFfupKiV7B/QYAy3ZkGDLSFOF5Dk yebjPyBRzIW0THZYEfmISgVHxcyYZjLBKql+U466g35u8Y4PJLNt0mSBRte82EaNUy4X APNHNQYIGTKThqW3IHaJciuxqvyDz9A5XJRXSArCWDVMUj9XXtptIy2s0oZjQnRJAZNB WWAPdB72lluSMLZwKUVfobLfNs2zBAvFuUcoh/MbujEg5zBG5pfABPVknKoR9jG5CoA0 k8bA== 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=PhQOk6s89VJTqvadnBtQOzaVsU3U5YENKrUJWPx0m8Q=; b=F4bskNrEn3hJRJlvX2X1jRbAclfUVLYB//WhziiRqUywHScHOYmU+x2osP/pdyVwVH 2EM+zRn/9LMSO57P3ywR0rDGrwNK2YHRY9RZRPjBmTKYQ0XPYG/xouP1x9CRuEe+OQke d0aIA3Pf2c07ody/t+9T+5Of9bUNtajyD6WHr+Do9f+n8x1FoXCjG+9Sqha6WHSmSlGk 5/oFNNlpH1ddPPT+Tkba6WOlIbk7VmZLEEXw8C97BseF2lhKmFJJYohW8kihFRpxi/Wo 1YfXFVQxyWOmMU6OeDfL35TY//QTNTPlFG0W8L0Z8VCTrZi1tSY7jB2Evfx/aXF4Majk yxUA== X-Gm-Message-State: AE9vXwPqePS+bavqU/TU5Wtq1Ga3+kD+FpSS6/YB357XhwfIMORXq2UpIhMKgf+dSFd0sX6a7LsicM/6Asmu8Q== X-Received: by 10.200.40.36 with SMTP id 33mr57802728qtq.53.1473341586071; Thu, 08 Sep 2016 06:33:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.237.54.170 with HTTP; Thu, 8 Sep 2016 06:33:02 -0700 (PDT) From: Steven Liu Date: Thu, 8 Sep 2016 21:33:02 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/segment: remove initial_offset option from segment.c 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" ffmpeg have a generic solution working with all muxer named output_ts_offset Signed-off-by: LiuQi --- libavformat/segment.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) int reference_stream_index; int break_non_keyframes; @@ -802,7 +801,7 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt) { SegmentContext *seg = s->priv_data; AVStream *st = s->streams[pkt->stream_index]; - int64_t end_pts = INT64_MAX, offset; + int64_t end_pts = INT64_MAX; int start_frame = INT_MAX; int ret; struct tm ti; @@ -888,19 +887,7 @@ calc_times: av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); - /* compute new timestamps */ - offset = av_rescale_q(seg->initial_offset - (seg->reset_timestamps ? seg->cur_entry.start_pts : 0), - AV_TIME_BASE_Q, st->time_base); - if (pkt->pts != AV_NOPTS_VALUE) - pkt->pts += offset; - if (pkt->dts != AV_NOPTS_VALUE) - pkt->dts += offset; - - av_log(s, AV_LOG_DEBUG, " -> pts:%s pts_time:%s dts:%s dts_time:%s\n", - av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), - av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); - - ret = ff_write_chained(seg->avf, pkt->stream_index, pkt, s, seg->initial_offset || seg->reset_timestamps); + ret = ff_write_chained(seg->avf, pkt->stream_index, pkt, s, seg->reset_timestamps); fail: if (pkt->stream_index == seg->reference_stream_index) { @@ -998,7 +985,6 @@ static const AVOption options[] = { { "individual_header_trailer", "write header/trailer to each segment", OFFSET(individual_header_trailer), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, E }, { "write_header_trailer", "write a header to the first segment and a trailer to the last one", OFFSET(write_header_trailer), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, E }, { "reset_timestamps", "reset timestamps at the begin of each segment", OFFSET(reset_timestamps), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, E }, - { "initial_offset", "set initial timestamp offset", OFFSET(initial_offset), AV_OPT_TYPE_DURATION, {.i64 = 0}, -INT64_MAX, INT64_MAX, E }, { "write_empty_segments", "allow writing empty 'filler' segments", OFFSET(write_empty), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, E }, { NULL }, }; diff --git a/libavformat/segment.c b/libavformat/segment.c index bf29ef8..2fc380e 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -114,7 +114,6 @@ typedef struct SegmentContext { char *header_filename; ///< filename to write the output header to int reset_timestamps; ///< reset timestamps at the begin of each segment - int64_t initial_offset; ///< initial timestamps offset, expressed in microseconds char *reference_stream_specifier; ///< reference stream specifier