From patchwork Fri Mar 5 16:33:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 26167 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:6d42:0:0:0:0:0 with SMTP id i63csp529676ybc; Fri, 5 Mar 2021 08:40:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJxyPLEW8kY0oRq3II0L3ItX/7QDRvfg0H7KRNEiwGQwgD4f60ifFYpE0h24KscsCnPpF0JA X-Received: by 2002:a17:906:1759:: with SMTP id d25mr2989071eje.524.1614962441052; Fri, 05 Mar 2021 08:40:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614962441; cv=none; d=google.com; s=arc-20160816; b=N7TsUwfrfFhLqnUym0SM0Tuo0vsM2+CeGYiFJev0FwUK2bruy0jwP90t3teOF+gXbN 3vPk104FWcKynzXx1hxHQNT+Em8dCNrBED3eTgA0EFtuAc8QoY3OmZCIzc+AX/JH/j7l R3I0IZET7AnqgtTdpKUSwTYLRkitL2hhL+eBAHD2REnFzWSrLXxrkANlyPhD7aG36l5+ zkdwsjIZ/QI0YfUdwwTQN7xaqNiyoQ/HXSeqyFi2d0NIRERPHmPA+HUNapSjG4Wrm7K+ GcyAR3ibPj2jtkx/eNJ9ZjM5Hpqpbhw2GdetlzackhfdpUPe/nGsJWyKv1HWeLmylPBr 2xIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=fON5NghHTbML9O+hQaJxcXyhcQ4C3KzE987n+P5rApU=; b=UjHEsBOGZJWGRFblsMFu9Gfz+tOHaTck0eIV+ZrVZslRRWwFO4Yc07rvju0JeKM/Cb 7Y/gc6VC4g3uTqBIb63jycajxtm1qDusJOHkNw9++9UqHMv46TgBC0KHTZzaGMUoO0yI C1hv8YDYxpmZgEMRy7eoEWfXUh1+R2f6vDXROoQnTH1utgXJvDJFu0RRgsTbqhkJirI4 50tjVWYqeZcDamxHIt7clBehmqzdUArSKjwdNa4f/x9NGeqFNVPEG/lDrXbei/G2o7Ri hISYv90xNMcBvYQEj9dx5tBDZc5VFYM84z+fIaTv6H3kGml9ZdtNGyj/w2ipNOruURAb aMlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=B6YVLqsc; 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=QUARANTINE 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 u4si1533858ejc.113.2021.03.05.08.40.40; Fri, 05 Mar 2021 08:40:41 -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=B6YVLqsc; 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=QUARANTINE 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 9098C68AC9E; Fri, 5 Mar 2021 18:36:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E7DFD68AC09 for ; Fri, 5 Mar 2021 18:35:58 +0200 (EET) Received: by mail-qk1-f181.google.com with SMTP id a9so2507529qkn.13 for ; Fri, 05 Mar 2021 08:35:58 -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:mime-version :content-transfer-encoding; bh=h5jGWYU24ydkE5yPhgf7BkxUWroEF6Toc78A+oGRTSg=; b=B6YVLqscErSrpfcRX8eUzLyOp/ac1LSovjFH3FgKE8N+vwDkEBkzwMyJKJWd51uPRl svFzr77lKWV5c1MQGI5clh8aWaI6C9XU6kgKs8Yu/2HjMg5oNcLW3Ref2ascJN1CAEae joE/FWeWSaGmlHg5w1qPp3HXCHsPWRfhVUVFBT2wLeMHNi/e3WFn57Ft9gMIQyxYafy0 RldigjakvTuXzAwM7idCYa9uMY+4wBB/PtwN2vJHfuve1X7shXXFva3nM1u6LTv6pajw nUQVvMb6mJ5DucqXYqw+flGX/mlEsyLy4F00xLQxDAo4x27T84rn6nVIuAfFWS826ZB8 Q4Vw== 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:mime-version:content-transfer-encoding; bh=h5jGWYU24ydkE5yPhgf7BkxUWroEF6Toc78A+oGRTSg=; b=YT8LIifX0E/Msf+XegOUQskdnHznEJdwN7dW4X/wnPCCK4MBnGIMFpZ2z24OGxQpoB +nUYn2ipJ9pnWvgAVsRL996i8DEGjIVwedH1J6Be4LoR48Uvgx/82jxy7DP321EyEB5l v6czcrXrItAXJkHzggtrVzjJWRH3VBgC7n0708hR3sUiE2Jnn81SRK92pRELqxTV8D1s 0qSd9Jj8+qke9MwFr1gYQ33HN5rESEh9zypJdO0dhB3ewkp/bqtgCk1mtL4OmDmfeBn2 Y2e5kD5p6Xc9nFO8Pox3LD3GXh7SCEcsEWrV8yvVSIKjXkf0OinftSL/BscS2S2X525f 5OAA== X-Gm-Message-State: AOAM531G2VqPKdXiwuS3S1A+UeAWQVQj8r2GuXjBnjV8YSRwRqa5ljni R4jnpz3VYrJfO3wpHrvWntLTktXJcmMrqA== X-Received: by 2002:a05:620a:144a:: with SMTP id i10mr9855519qkl.431.1614962157432; Fri, 05 Mar 2021 08:35:57 -0800 (PST) Received: from localhost.localdomain ([181.23.89.132]) by smtp.gmail.com with ESMTPSA id b10sm2168494qtt.23.2021.03.05.08.35.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Mar 2021 08:35:57 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 Mar 2021 13:33:16 -0300 Message-Id: <20210305163339.63164-26-jamrial@gmail.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210305163339.63164-1-jamrial@gmail.com> References: <20210305163339.63164-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 25/48] avformat/mpegts: use av_packet_alloc() to allocate packets 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" X-TUID: tLPNlFz2NIBr Content-Length: 4126 Signed-off-by: James Almer --- libavformat/mpegts.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index e283ec09d7..6e0d9d7496 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -981,7 +981,7 @@ static void reset_pes_packet_state(PESContext *pes) static void new_data_packet(const uint8_t *buffer, int len, AVPacket *pkt) { - av_init_packet(pkt); + av_packet_unref(pkt); pkt->data = (uint8_t *)buffer; pkt->size = len; } @@ -990,7 +990,7 @@ static int new_pes_packet(PESContext *pes, AVPacket *pkt) { uint8_t *sd; - av_init_packet(pkt); + av_packet_unref(pkt); pkt->buf = pes->buffer; pkt->data = pes->buffer->data; @@ -3298,33 +3298,37 @@ static int64_t mpegts_get_dts(AVFormatContext *s, int stream_index, int64_t *ppos, int64_t pos_limit) { MpegTSContext *ts = s->priv_data; + AVPacket *pkt; int64_t pos; int pos47 = ts->pos47_full % ts->raw_packet_size; pos = ((*ppos + ts->raw_packet_size - 1 - pos47) / ts->raw_packet_size) * ts->raw_packet_size + pos47; ff_read_frame_flush(s); if (avio_seek(s->pb, pos, SEEK_SET) < 0) return AV_NOPTS_VALUE; + pkt = av_packet_alloc(); + if (!pkt) + return AV_NOPTS_VALUE; while(pos < pos_limit) { - int ret; - AVPacket pkt; - av_init_packet(&pkt); - ret = av_read_frame(s, &pkt); - if (ret < 0) + int ret = av_read_frame(s, pkt); + if (ret < 0) { + av_packet_free(&pkt); return AV_NOPTS_VALUE; - if (pkt.dts != AV_NOPTS_VALUE && pkt.pos >= 0) { - ff_reduce_index(s, pkt.stream_index); - av_add_index_entry(s->streams[pkt.stream_index], pkt.pos, pkt.dts, 0, 0, AVINDEX_KEYFRAME /* FIXME keyframe? */); - if (pkt.stream_index == stream_index && pkt.pos >= *ppos) { - int64_t dts = pkt.dts; - *ppos = pkt.pos; - av_packet_unref(&pkt); + } + if (pkt->dts != AV_NOPTS_VALUE && pkt->pos >= 0) { + ff_reduce_index(s, pkt->stream_index); + av_add_index_entry(s->streams[pkt->stream_index], pkt->pos, pkt->dts, 0, 0, AVINDEX_KEYFRAME /* FIXME keyframe? */); + if (pkt->stream_index == stream_index && pkt->pos >= *ppos) { + int64_t dts = pkt->dts; + *ppos = pkt->pos; + av_packet_free(&pkt); return dts; } } - pos = pkt.pos; - av_packet_unref(&pkt); + pos = pkt->pos; + av_packet_unref(pkt); } + av_packet_free(&pkt); return AV_NOPTS_VALUE; }