From patchwork Wed Jul 29 18:25:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Szatmary X-Patchwork-Id: 21371 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8D4A844B08B for ; Wed, 29 Jul 2020 21:57:49 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5FD8368BA53; Wed, 29 Jul 2020 21:57:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68CAF68AB98 for ; Wed, 29 Jul 2020 21:57:43 +0300 (EEST) Received: by mail-lj1-f194.google.com with SMTP id g6so13584050ljn.11 for ; Wed, 29 Jul 2020 11:57:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szatmary-org.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=uIa7U/cf2f2JqJ57FcKE9GTLiBHdnd365wq5JGGc8jE=; b=SgBnbdqDPvUAOQNlB6egBjSQO+5cvuAMv3MPfOOduqA8Tsb9MEYJqfMxdNKIWKnTHC dOXIEvlzQLqY/bhnOVwjJJ/GR1OTZWrwMPuIfIegCs8ldMze03cBuVX+9tHClbf5W+P5 1ekb0WH8FJLsSbeDVaFCcLI739axFyaDHd+0ZMCJTlsZDgC2M2PhGk22PqRl7DRW1lnH nYt+mFxxrp9dI3MSzG0pqyDTpTtZNPXZxgwlqaUZN300TDKnw/CVQsQkqS2FxM22pB7b 2NPMGP9fW81cdGhj1PpaW86STY+Q8tuCfdG0z3gWWRO95HfzuyDhOoqddqomvuUlyxZi anhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=uIa7U/cf2f2JqJ57FcKE9GTLiBHdnd365wq5JGGc8jE=; b=KdZf7X/xNjPbmI9p6+8/ZneVO5SMRkAMWMaY8gen7vVPLnUbfA7E4JTRGbydstpXLi AZHl8ttIXovQix0hp7SGAB59KD7c4zl7BHA3EuMSz/bL2lPgf/6/ut0cKiVT9JJjD2P6 kj0lWTRF0tzzRFFwHYAdU0K0pJWcDIsF17avYXdanyzIIGpQQyuzVa+9wFb5J1yYSaye Fkqyo06Ma250SJPIfPDcaqdH3dTKgl903KO7tlS0KQegBqlt1K5sysiW+1WNcJl9ITQI pPXaVL/MMUWnV1Sk4LgkicCRfrVdeNS5CKNj/BVmXn/aoW9YWbriB9ypsTpHU1tKwzo9 ybBg== X-Gm-Message-State: AOAM532FlPAQkGzQ1GHZx4zuG8d7jQusMa+t6CfQTRRDjTp0h+oqJlfS oYwA1VjagD1mHenF4yBz3h+0rVvUqEhKDYLcpmSbiwJOg6WU/Q== X-Google-Smtp-Source: ABdhPJyPSGFua1wbbe/rDpUl4EPlJ2zYed0WmKpehMKg2VX39wHtHEnP2Q3q5mpT+gkFKrRKnmac8eSeGVSFqEvyFv0= X-Received: by 2002:a19:a07:: with SMTP id 7mr17856701lfk.65.1596047155052; Wed, 29 Jul 2020 11:25:55 -0700 (PDT) MIME-Version: 1.0 From: Matthew Szatmary Date: Wed, 29 Jul 2020 11:25:44 -0700 Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] Create and populate AVStream side data packet with contents of ISOBMFF edit list entries 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" Create and populate AVStream side data packet with contents of ISOBMFF edit list entries Signed-off-by: Matthew Szatmary Signed-off-by: Matthew Szatmary Signed-off-by: Matthew Szatmary Signed-off-by: Matthew Szatmary --- Changelog | 1 + libavcodec/packet.h | 14 ++++++++++++++ libavformat/mov.c | 17 ++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) return 0; @@ -7662,6 +7661,22 @@ static int mov_read_header(AVFormatContext *s) AVStream *st = s->streams[i]; MOVStreamContext *sc = st->priv_data; + if (sc->elst_data) { + uint8_t *elst_data; + elst_data = av_stream_new_side_data(st, AV_PKT_DATA_EDIT_LIST, sc->elst_count * 20); + + if (!elst_data) + goto fail; + + for (j = 0; j < sc->elst_count; j++) { + AV_WB64((elst_data+(j*20)), sc->elst_data[j].duration); + AV_WB64((elst_data+(j*20)+8), sc->elst_data[j].time); + AV_WB32((elst_data+(j*20)+16), sc->elst_data[j].rate); + } + + av_freep(&sc->elst_data); + } + switch (st->codecpar->codec_type) { case AVMEDIA_TYPE_AUDIO: err = ff_replaygain_export(st, s->metadata); diff --git a/Changelog b/Changelog index c37ffa82e1..2d719dd3b1 100644 --- a/Changelog +++ b/Changelog @@ -9,6 +9,7 @@ version : - VDPAU accelerated HEVC 10/12bit decoding - ADPCM IMA Ubisoft APM encoder - Rayman 2 APM muxer +- AV_PKT_DATA_EDIT_LIST added to AVStream side_data version 4.3: diff --git a/libavcodec/packet.h b/libavcodec/packet.h index 0a19a0eff3..5faa594cf5 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -290,6 +290,20 @@ enum AVPacketSideDataType { */ AV_PKT_DATA_S12M_TIMECODE, + /** + * ISO media file edit list side data packet + * The structure is repeated for each entry in the edit list + * The number of entries can be calculated + * by dividing the packet size by the entry size + * Each entry is 20 bytes and is laid out as follows: + * @code + * s64le duration + * s64le time + * float32le rate + * @endcode + */ + AV_PKT_DATA_EDIT_LIST, + /** * The number of side data types. * This is not part of the public API/ABI in the sense that it may diff --git a/libavformat/mov.c b/libavformat/mov.c index d16840f3df..bb2c940e80 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4317,7 +4317,6 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom) av_freep(&sc->keyframes); av_freep(&sc->stts_data); av_freep(&sc->stps_data); - av_freep(&sc->elst_data); av_freep(&sc->rap_group);