From patchwork Tue Oct 9 23:32:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 10568 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:ab0:73d2:0:0:0:0:0 with SMTP id m18csp131040uaq; Tue, 9 Oct 2018 16:32:33 -0700 (PDT) X-Google-Smtp-Source: ACcGV63C5zeibIUyTqQDED4K7X3rEHz2dOcy8GInStiOiwjEh0dnb2L2DOn+8kbrx/nK/JbrXVW8 X-Received: by 2002:adf:9f0f:: with SMTP id l15-v6mr21669356wrf.206.1539127953540; Tue, 09 Oct 2018 16:32:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539127953; cv=none; d=google.com; s=arc-20160816; b=g/4Q4dd+Ty275OIz+cOIBBMfXLcUbwnF/CMUPlbbkPRfYxztf66EtE7MEMx7xildub MBzSozZEQqmHMm6NYlV5u0Ab+zVBJ40PxD1pw20zHGGBwTY7lKqjbwp0VKV5D/W7BGuf ZaqVKc0Q9oFyrwA2AxW7h+O3EQUNXM72qnjMnwguXhzQum6DjD0iRmanv9kHfOGAyP3f K2RRRsro/cdnaRrynHkhgI2LelVHfR9Oyq//cYcdmf2Uak5SrbzlXPo33STqDafMHE3o OeVujV7AlTZb7rxy/kPB/pVahp7/AquqKc6vr4lizTiy10edrEml9WJqT2V6p1Ucmluo C2Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=FUC1eWfs/PAWlHgd/pTvFlGxT8XlJklLHjHvm1bxugQ=; b=O9mGhUFA2OuEP+LpD+B0ybBF8Wd5r3xuwZhXGxXQsl1zhfpQcvcsWuQx+DjgN2jyvQ MWi51hgmVrXQHg0KzjPViynC4qutILPUi015A55K4hDo7h89gZPq1g97RpQ30AbDMjcx Dc+ki4WbPtY+1IMm5aYvTzyv4bN4M9p0vc9ytU/odC/k0Cg2CGwy8fU7tVd1u7tTjT/x 7si3WJtJg2JZ8ugTUAJN1y9mWycD3zorrE7Etlq2KQnHUDUoAL9a3ghCXGfuDDFnxs0t cnnij9kFz6TWKJBaRukIYpezUOH4hmH+vtpw9pdMjmv8pYSNjgDVH8zvJsFtGH34HQdy 5J4g== ARC-Authentication-Results: i=1; mx.google.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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r5-v6si16300611wrp.189.2018.10.09.16.32.33; Tue, 09 Oct 2018 16:32:33 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0FEE168A1DB; Wed, 10 Oct 2018 02:32:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CB53B689F26 for ; Wed, 10 Oct 2018 02:31:57 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 14982E19C3; Wed, 10 Oct 2018 01:32:20 +0200 (CEST) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1JUAScTLuAGV; Wed, 10 Oct 2018 01:32:19 +0200 (CEST) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id A5D66E1AFE; Wed, 10 Oct 2018 01:32:18 +0200 (CEST) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Wed, 10 Oct 2018 01:32:14 +0200 Message-Id: <20181009233214.8785-2-cus@passwd.hu> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181009233214.8785-1-cus@passwd.hu> References: <20181009233214.8785-1-cus@passwd.hu> Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/utils: keep CORRUPT and TRUSTED packet flags when parsing 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 Cc: Marton Balint MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" An FF_ macro got defined in avcodec.h to store the flags which need to be propagated when parsers split packets so this won't be forgotten when a new packet flag is introduced. (I wonder if DISPOSABLE also fits here, or maybe some special handling is needed like it is done for the keyframe flag?) --- libavcodec/avcodec.h | 9 ++++++++- libavcodec/version.h | 2 +- libavformat/utils.c | 2 +- tests/ref/fate/flv-demux | 2 +- tests/ref/fate/iv8-demux | 2 +- tests/ref/fate/segment-mp4-to-ts | 6 +++--- tests/ref/fate/ts-demux | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 705a3ce4f3..9a3f9b6226 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1493,7 +1493,14 @@ typedef struct AVPacket { * be discarded by the decoder. I.e. Non-reference frames. */ #define AV_PKT_FLAG_DISPOSABLE 0x0010 - +/** + * Packet flags which must always be kept when parsers split packets + */ +#define FF_PKT_FLAGS_KEEP_WHEN_PARSING (\ + AV_PKT_FLAG_CORRUPT | \ + AV_PKT_FLAG_DISCARD | \ + AV_PKT_FLAG_TRUSTED | \ + 0) enum AVSideDataParamChangeFlags { AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, diff --git a/libavcodec/version.h b/libavcodec/version.h index 97d134851f..79c5dc6773 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 32 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ diff --git a/libavformat/utils.c b/libavformat/utils.c index a8ac90213e..351bd88fa5 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1511,7 +1511,7 @@ static int parse_packet(AVFormatContext *s, AVPacket *pkt, int stream_index) out_pkt.pts = st->parser->pts; out_pkt.dts = st->parser->dts; out_pkt.pos = st->parser->pos; - out_pkt.flags |= pkt->flags & AV_PKT_FLAG_DISCARD; + out_pkt.flags |= pkt->flags & FF_PKT_FLAGS_KEEP_WHEN_PARSING; if (st->need_parsing == AVSTREAM_PARSE_FULL_RAW) out_pkt.pos = st->parser->frame_offset; diff --git a/tests/ref/fate/flv-demux b/tests/ref/fate/flv-demux index 4a791754cb..0feac7a090 100644 --- a/tests/ref/fate/flv-demux +++ b/tests/ref/fate/flv-demux @@ -613,4 +613,4 @@ 0, 11612, 11612, 33, 1078, 0x501d1c72, F=0x0 0, 11645, 11645, 33, 2600, 0xdf370d24, F=0x0 1, 11656, 11656, 46, 346, 0x8899a188 -0, 11678, 11678, 33, 1190, 0xdc1e4c99, F=0x0 +0, 11678, 11678, 33, 1190, 0xdc1e4c99, F=0x2 diff --git a/tests/ref/fate/iv8-demux b/tests/ref/fate/iv8-demux index 518f3de974..860a287d53 100644 --- a/tests/ref/fate/iv8-demux +++ b/tests/ref/fate/iv8-demux @@ -27,5 +27,5 @@ 0, 72000, 72000, 0, 20891, 0x3d064fd3 0, 75600, 75600, 0, 20834, 0xcb774dbc 0, 79200, 79200, 0, 20870, 0xbc536589 -0, 82800, 82800, 0, 21421, 0xc99a68e4 +0, 82800, 82800, 0, 21421, 0xc99a68e4, F=0x3 0, 86400, 86400, 0, 12869, 0x5684e304 diff --git a/tests/ref/fate/segment-mp4-to-ts b/tests/ref/fate/segment-mp4-to-ts index b5accb60f7..f54871b8a1 100644 --- a/tests/ref/fate/segment-mp4-to-ts +++ b/tests/ref/fate/segment-mp4-to-ts @@ -23,7 +23,7 @@ 0, 50400, 54000, 0, 607, 0xc53c2339, F=0x0, S=1, 1, 0x00e000e0 0, 54000, 72000, 0, 4755, 0x2f642b58, F=0x0, S=1, 1, 0x00e000e0 0, 57600, 64800, 0, 1182, 0xbe1a4847, F=0x0, S=1, 1, 0x00e000e0 -0, 61200, 61200, 0, 809, 0x8d948a4e, F=0x0, S=1, 1, 0x00e000e0 +0, 61200, 61200, 0, 809, 0x8d948a4e, F=0x2, S=1, 1, 0x00e000e0 0, 64800, 68400, 0, 656, 0x4fa03c2b, F=0x0, S=1, 1, 0x00e000e0 0, 68400, 86400, 0, 26555, 0x5629b584, S=1, 1, 0x00e000e0 0, 72000, 79200, 0, 1141, 0x761b31e8, F=0x0, S=1, 1, 0x00e000e0 @@ -95,7 +95,7 @@ 0, 309600, 313200, 3600, 829, 0xffd795cd, F=0x0, S=1, 1, 0x00e000e0 0, 313200, 331200, 3600, 5352, 0x59997996, F=0x0, S=1, 1, 0x00e000e0 0, 316800, 324000, 3600, 1501, 0xb3b8f001, F=0x0, S=1, 1, 0x00e000e0 -0, 320400, 320400, 3600, 941, 0x92b0cb18, F=0x0, S=1, 1, 0x00e000e0 +0, 320400, 320400, 3600, 941, 0x92b0cb18, F=0x2, S=1, 1, 0x00e000e0 0, 324000, 327600, 3600, 823, 0x3d548355, F=0x0, S=1, 1, 0x00e000e0 0, 327600, 345600, 3600, 24042, 0x441e94fb, S=1, 1, 0x00e000e0 0, 331200, 338400, 3600, 1582, 0x4f5d1049, F=0x0, S=1, 1, 0x00e000e0 @@ -119,7 +119,7 @@ 0, 396000, 399600, 3600, 199, 0x79b06355, F=0x0, S=1, 1, 0x00e000e0 0, 399600, 417600, 3600, 1862, 0x22a2a06c, F=0x0, S=1, 1, 0x00e000e0 0, 403200, 410400, 3600, 359, 0x11bdae52, F=0x0, S=1, 1, 0x00e000e0 -0, 406800, 406800, 3600, 235, 0xbec26964, F=0x0, S=1, 1, 0x00e000e0 +0, 406800, 406800, 3600, 235, 0xbec26964, F=0x2, S=1, 1, 0x00e000e0 0, 410400, 414000, 3600, 221, 0x8380682c, F=0x0, S=1, 1, 0x00e000e0 0, 414000, 432000, 3600, 22588, 0xf0ecf072, S=1, 1, 0x00e000e0 0, 417600, 424800, 3600, 383, 0x4f3bb571, F=0x0, S=1, 1, 0x00e000e0 diff --git a/tests/ref/fate/ts-demux b/tests/ref/fate/ts-demux index eb13ecc684..cc455118d6 100644 --- a/tests/ref/fate/ts-demux +++ b/tests/ref/fate/ts-demux @@ -13,7 +13,7 @@ 1, 0, 0, 2880, 1536, 0x773ffeea, S=1, 1, 0x00bd00bd 1, 2880, 2880, 2880, 1536, 0x6dc10748 1, 5760, 5760, 2880, 1536, 0xbab5129c -1, 8640, 8640, 2880, 1536, 0x602f034b, S=1, 1, 0x00bd00bd +1, 8640, 8640, 2880, 1536, 0x602f034b, F=0x3, S=1, 1, 0x00bd00bd 1, 11520, 11520, 2880, 906, 0x69cdcbcd 0, 32037, 36541, 1501, 114336, 0x37a215a8, S=1, 1, 0x00e000e0 0, 33538, 33538, 1501, 12560, 0xb559a3d4, F=0x0, S=1, 1, 0x00e000e0