From patchwork Sun Oct 28 21:09:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 10824 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 0A1D144E0A0 for ; Sun, 28 Oct 2018 23:17:19 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7181568A4BE; Sun, 28 Oct 2018 23:16:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E66168A245 for ; Sun, 28 Oct 2018 23:16:43 +0200 (EET) Received: by mail-wr1-f46.google.com with SMTP id g9-v6so6567762wrq.4 for ; Sun, 28 Oct 2018 14:17:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=UmaBwsZ4quB+SxsYyj+ru1UnsQde8ZZuByA+621TMww=; b=GnSvdEoo5VVc3EYPdZnxwIIycqXPPwnIGKrCs0bekjWedeRdW7NnqczhkbzsTdNWfS zIJSKNdRCvwkgXhgxrnyBE1jZqsWNNERmsRxE//1Igl4rmU6LDdNfFjT9+aJxFaVrHii 2dZtvmCWAJFfMWiewx6G27Zn8LdLmyta+pG9G1UiLnDs2Dp9m8CJ0e3spJv5E79Aom93 4xNh81tHwvo6cTwGS1dXr6PFIBf7Z3ZyaWvJQrahU6I0FB4TmAbb33f46MaHfljNuVzo tWAy+6+IvpfcqV727Sus95w2/fUEo5oDCuovUWC0SJ061ki0jyqyWaVIzuUg3Guj5Asz M//A== 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; bh=UmaBwsZ4quB+SxsYyj+ru1UnsQde8ZZuByA+621TMww=; b=DfdNUvkrhV3FSSQkOG0la4loVSSOeMObkHdOdWaWQEdmyLaPC42Vsk9HWWpJb1Hbim Z42vNjGlFEURayicvoTwXYAxoRLSvEPZ64KLG0s1aPLyW9/6KGxeWrxv5BRvZF/mDr5k p8qm/D33hDvmOA9dTm1HovHQcXJxzTGhL4G7/7dnM0UBF/Um3pCcCD55REgtHMduidRc vKJMdgKbcLnRDJMVQWPV/6MucqpF6zqOywcalxXdptdVCoQPj50RVezuYetMBOBg1j2c ylBbFH6Lk2/FJ6NWs5lpWi1xsXrMvoY6Di2vOihqjF69xR6TNyoHUeb9M+8f1t14YpB5 idsQ== X-Gm-Message-State: AGRZ1gIUTU5RM8MFlC59c5bMYeX7j9r5THovzIceSCxtTYfVifCfDnBA o3XLHHEh45GSdTjkAoyWtLd3zW4+CJpejQ== X-Google-Smtp-Source: AJdET5e0ngeZuzE4B5SNe56nVLynJWJIY/ULKreldqJCi9E0hEMSsZVLxpVslv8yIjQBXV9f4fThJA== X-Received: by 2002:a5d:5544:: with SMTP id g4-v6mr3871624wrw.222.1540760999604; Sun, 28 Oct 2018 14:09:59 -0700 (PDT) Received: from localhost (host-97-36.parnet.fi. [77.234.97.36]) by smtp.gmail.com with ESMTPSA id 193-v6sm12552383wmj.21.2018.10.28.14.09.59 for (version=TLS1 cipher=AES128-SHA bits=128/128); Sun, 28 Oct 2018 14:09:59 -0700 (PDT) From: =?UTF-8?q?Martin=20Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Oct 2018 23:09:58 +0200 Message-Id: <20181028210958.63387-1-martin@martin.st> X-Mailer: git-send-email 2.17.1 (Apple Git-112) In-Reply-To: References: Subject: [FFmpeg-devel] [PATCH 2/2] flvdec: Export unknown metadata packets as opaque data 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" --- Removed the option and made this behaviour the default. --- libavformat/flv.h | 1 + libavformat/flvdec.c | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/libavformat/flv.h b/libavformat/flv.h index 3aabb3adc9..3571b90279 100644 --- a/libavformat/flv.h +++ b/libavformat/flv.h @@ -66,6 +66,7 @@ enum { FLV_STREAM_TYPE_VIDEO, FLV_STREAM_TYPE_AUDIO, FLV_STREAM_TYPE_SUBTITLE, + FLV_STREAM_TYPE_DATA, FLV_STREAM_TYPE_NB, }; diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index ffc975f15d..4b9f46902b 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -143,7 +143,9 @@ static AVStream *create_stream(AVFormatContext *s, int codec_type) st->codecpar->codec_type = codec_type; if (s->nb_streams>=3 ||( s->nb_streams==2 && s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE - && s->streams[1]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE)) + && s->streams[1]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE + && s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_DATA + && s->streams[1]->codecpar->codec_type != AVMEDIA_TYPE_DATA)) s->ctx_flags &= ~AVFMTCTX_NOHEADER; if (codec_type == AVMEDIA_TYPE_AUDIO) { st->codecpar->bit_rate = flv->audio_bit_rate; @@ -1001,7 +1003,7 @@ retry: int type; meta_pos = avio_tell(s->pb); type = flv_read_metabody(s, next); - if (type == 0 && dts == 0 || type < 0 || type == TYPE_UNKNOWN) { + if (type == 0 && dts == 0 || type < 0) { if (type < 0 && flv->validate_count && flv->validate_index[0].pos > next && flv->validate_index[0].pos - 4 < next @@ -1015,6 +1017,8 @@ retry: return flv_data_packet(s, pkt, dts, next); } else if (type == TYPE_ONCAPTION) { return flv_data_packet(s, pkt, dts, next); + } else if (type == TYPE_UNKNOWN) { + stream_type = FLV_STREAM_TYPE_DATA; } avio_seek(s->pb, meta_pos, SEEK_SET); } @@ -1054,10 +1058,13 @@ skip: } else if (stream_type == FLV_STREAM_TYPE_SUBTITLE) { if (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) break; + } else if (stream_type == FLV_STREAM_TYPE_DATA) { + if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA) + break; } } if (i == s->nb_streams) { - static const enum AVMediaType stream_types[] = {AVMEDIA_TYPE_VIDEO, AVMEDIA_TYPE_AUDIO, AVMEDIA_TYPE_SUBTITLE}; + static const enum AVMediaType stream_types[] = {AVMEDIA_TYPE_VIDEO, AVMEDIA_TYPE_AUDIO, AVMEDIA_TYPE_SUBTITLE, AVMEDIA_TYPE_DATA}; st = create_stream(s, stream_types[stream_type]); if (!st) return AVERROR(ENOMEM); @@ -1153,6 +1160,8 @@ retry_duration: size -= ret; } else if (stream_type == FLV_STREAM_TYPE_SUBTITLE) { st->codecpar->codec_id = AV_CODEC_ID_TEXT; + } else if (stream_type == FLV_STREAM_TYPE_DATA) { + st->codecpar->codec_id = AV_CODEC_ID_NONE; // Opaque AMF data } if (st->codecpar->codec_id == AV_CODEC_ID_AAC || @@ -1253,7 +1262,8 @@ retry_duration: if ( stream_type == FLV_STREAM_TYPE_AUDIO || ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY) || - stream_type == FLV_STREAM_TYPE_SUBTITLE) + stream_type == FLV_STREAM_TYPE_SUBTITLE || + stream_type == FLV_STREAM_TYPE_DATA) pkt->flags |= AV_PKT_FLAG_KEY; leave: