From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4D8D440993 for ; Wed, 2 Feb 2022 00:16:02 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D3BA268B236; Wed, 2 Feb 2022 02:16:00 +0200 (EET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2092.outbound.protection.outlook.com [40.92.91.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 43710680246 for ; Wed, 2 Feb 2022 02:15:54 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KZfbKNxggYbZ6+6xpIb8vK9dt4J4eG/nLTJ3BG8KRWvzO1QqbFfAPMWv0mWJCqlezZd79gGMr7/FWYz+jWilmkUH5hFnRmuiVCRK4bc8e8+zJHW7OLCuLU8obv5GUzB0RfdhVLuczrFBXx1G7gAFDgfdG17EUGhc+1+aD6Yej/kMopMJWuekW0tbBESWQO2MOaTGtwZYu9GOdeDOUKRNKhg5omFRRPCLW4MjfIYuLYNb7QFiRz8cZXQVnfgU4KJl4LPLnTVLunYnP6b4vp6YkKknAKgKGBf06sCVwHS02g4tfL88iL5G5Go8x8gjVhg46ycBgUGN+q6A306qSbJcpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8FQsQsfirwdgLnPpr/IewidoekUygpeKt+Lh99euwpw=; b=DtG6eG7qq/Jbw7exi5etaapb7q7IL8m++iSio/Y0ZzYZtUcd/BqNxnBd6MhFNE1UggeviKi+OJaJfqOMzOObCmWyZoRI2PXJ8/yXzIHjzAiAJ3lBDdmQyGwEb4K3U+pNpBNoW1LzYjpuKub0C1WMe9HNVKBEy5edLHG6ewQsxOyxwzUcokRfwDqhds6ZfxkgfMdz6/wjEKW7Nf+aqPd6EuVbezHTuRFLYDGtf9MzXdLUePevxE9cxABPSGLi0VhqzKqO7/Z22MhPhihMcEBlYpGwueO4hWc5JMhjalDNtY5+0rF3W0TiyKtg/kocNiBe4f4sDQY4DAmyQRMSyIvPMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8FQsQsfirwdgLnPpr/IewidoekUygpeKt+Lh99euwpw=; b=bZoO5pdvWrgwmbawA/Wn7ixyHX6/kc+JoDRt6x8KBQ4EUgS+RsNkJVbDTrtFONvq0s+cPeMwumhcdGVMnS9LrwmkAGIjpaPA7qn8B616nBtof+qVtM63hwPuNFOENcx8GBs7iynjR14jhgoyON4ZmUd42HhFuDTusfHkMSTOSK4vEdMATAyMKN9O8Jprtm7FOvUcdS9ZG0h2qwhaSiQsDR8eHa2mu8jziQR0/i5WBcjbfHcFjzinIoyQeE3n2SW8WWqpjTWNszRPbUKWIpeNIzDKp4GMBv0+IH2VS7vfAQppnLbx/fCJgRzQ+AdbNG+y9y4hnphF17EjpfGX/LI+/A== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by DB6PR0301MB2150.eurprd03.prod.outlook.com (2603:10a6:4:46::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.22; Wed, 2 Feb 2022 00:15:52 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%6]) with mapi id 15.20.4951.011; Wed, 2 Feb 2022 00:15:52 +0000 Message-ID: Date: Wed, 2 Feb 2022 01:15:51 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220201212056.29712-1-scott.the.elm@gmail.com> <20220201212056.29712-4-scott.the.elm@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220201212056.29712-4-scott.the.elm@gmail.com> X-TMN: [55gO/jekjl5wydhTFRHkaBC0uQjylyoD] X-ClientProxiedBy: AS9PR0301CA0052.eurprd03.prod.outlook.com (2603:10a6:20b:469::7) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <66ea9e21-f4fa-3f2b-dc71-4f259891e302@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 81f10358-e66b-42cb-b723-08d9e5e12c30 X-MS-TrafficTypeDiagnostic: DB6PR0301MB2150:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PgobYFQZJEmOh0+PSa+UBQXEtLQAAMMcWKKctFLMHsQIWSdRFnaef0Eqv+1//urxt2yN4c0fM94KonBSTWTCfYpHW4hgxZ1NySfJTBrvM/givSXRMJnBVXiAxl9o0hoS/stiB20Svk0GdvsnR3C9D1maVSBRnOwLjNoVlLY5kJ7wDiLi6YX/q9E/XggZA4bXzl3g7FCg1+LGuI08YhpdQ0c4V0Q6MoMnVuvCg9zkr5qQ636Cf6ZtNwUVT2oIyWMfgcr6bQlbJPLEhyuBat6M59x3kuyqEMC8Wr1AQwnXkhwD0/dTlNoN1qyVx4Ufp8W75kmZExYTUDh4Bdsej7gDwhmYEZPJ7M8CZxnjAHeYw5fYzkVYzzWB1v1KkhRi5OlMOoF26drCpTC00/45N/DlUr1CIZvrG7ZsJt9/r5MGGXW1I33/0KyN/J4CpQ7nWP0z7sxFm4/Av6pXd7+ddU5mJVHEPA+ev1i43deZQVN+kUIJArmwJGvWDWznkoFai+82sQTKchrSD50cWROEWgbL1rVtvL+K5F+JMP3x/tUVFCbffqS/quFXD6iMkfhXdNPkxXFw20Z3OVN7jidSnSVLFizXTRPwwhpuyWOWPlMF7GY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Ym9hMHd0QUJjaU1KcXRtVmJncmh5aW5mYmxzM2JBL1RnalRCS1MyMXVWWDZt?= =?utf-8?B?dVlwMGdGdWFYOGJzbkxNME5ONXB0emRXYmFpWkI5V0xjcXJEMko2TVpGcjBF?= =?utf-8?B?emlFLzAzdTFrZ1FFRGx5YUdGcVVta1dYRDFWYllWdE92Mkt4MXJDenVheWZZ?= =?utf-8?B?WjBPR3Z3eUU2Sm4vN2dscXluSjdEMXpHRENaOHBXNVBqUzFEazF0N29YMHBq?= =?utf-8?B?c3ZCK3BKZ0g3VnhrUTU2MlhZVFY4Rk9QUTVKOHVZUFExeS9yUWJYRG8xbUhJ?= =?utf-8?B?MzNRSjBTMTJxK0ZhN1FrYnRTUXlJYlFkNGVyZmlKd1RVVVQwaGFlWGsxU1JR?= =?utf-8?B?emlySCtVOHNDbUVJZkhlM0MvUE1Zc3RoSjg4b0kxSm5yZmg0ODYydGVBeExB?= =?utf-8?B?V0FGa3BRWm0xN2lqSW1zckN2em9naFBOcUNETU0yK1N3MFZNNE1NRzJmL0t4?= =?utf-8?B?dVVUcGE3cXg4WkRuQ2VYM2JkaFRpQng4enlRS3Nxa0xKODRqZXdFT0d0ZVFk?= =?utf-8?B?bmZmenhWZ1AwUCt5RU5ldlFoQktMT3laTVo3K0QrWEZ1d2w4dGFDWmV6ZHlw?= =?utf-8?B?TUt5cmFUUE91dWZxUk94cXRrcXJlckRISzdrZk5LUFd0YUQ3NUFUMDljYlZm?= =?utf-8?B?VHZPcFc2NytDQ0g4WFJTVi9OKzdxUmNJSHAyZjcwQ29zUlU1Tkt5VkdOUDdG?= =?utf-8?B?SjdmSVhqWXIvdWJ4YXhGQXcwb1pCTE16eGppc0RXbmVRZ1hLWUVtdjBydVBN?= =?utf-8?B?MGk2QTZ3cGJ4c0JnbzVLUTd6MWdtOTJlKytzM3gxM2VSeTR4cExaZm9xb2pD?= =?utf-8?B?NHZmQ0lxRnAxMFB2cStWN2U0NjE4d1lreTFXemZOMzhZVjA2QTdNQS9vTmd5?= =?utf-8?B?YVh4Lzl4T2dmdGl4UkNsdW8wckd6cVQ3U2t6eUdqaUlWazJYMmltT1piUmdR?= =?utf-8?B?UmF6WmJRQk9keklTNzRDWFJpS0RMWFEzbDdRWDdCL2N3Y01mb0Zjd3NNamoz?= =?utf-8?B?KzFicUJqTzlGbGFKVFFna1dXbndSR0ZpZmVSR1dkWFVBRXNvMno3ZWJyK0dY?= =?utf-8?B?eHZxOThoUFQ3OE11Wm5maEJRa2FoaFpXMUhzdnlpOTVUMmNaOWQvUk9xaWs2?= =?utf-8?B?QWppU2tyVnV0ZTIwaDRGV0hyeUJZRzJOUXEzaERjVE04ODcybnlRVnJkT29B?= =?utf-8?B?dTVBMXgvOXhwbGFHblRpSmttSGEzZGRPTmFlZVNuakhueTNtbStNeS9EYkJL?= =?utf-8?B?aDlxRTA5TzNiTXpVdGVrSHZxZzlRaEFoQUlOUDhFT1NvV3kzZz09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81f10358-e66b-42cb-b723-08d9e5e12c30 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2022 00:15:52.2521 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0301MB2150 Subject: Re: [FFmpeg-devel] [PATCH 3/8] avpriv_find_start_code(): make the state parameter output only X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Scott Theisen: > --- > libavcodec/cbs_mpeg2.c | 8 -------- > libavcodec/mpeg12dec.c | 5 ++--- > libavcodec/mpeg4_unpack_bframes_bsf.c | 1 - > libavcodec/mpegvideo_parser.c | 3 +-- > libavcodec/utils.c | 1 + > libavformat/rtpenc_mpv.c | 3 +-- > 6 files changed, 5 insertions(+), 16 deletions(-) > > diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c > index 26400f279f..03ea49cbca 100644 > --- a/libavcodec/cbs_mpeg2.c > +++ b/libavcodec/cbs_mpeg2.c > @@ -160,14 +160,6 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx, > for (i = 0;; i++) { > unit_type = start_code & 0xff; > > - if (start == frag->data + frag->data_size) { > - // The last four bytes form a start code which constitutes > - // a unit of its own. In this situation avpriv_find_start_code > - // won't modify start_code at all so modify start_code so that > - // the next unit will be treated as the last unit. > - start_code = 0; > - } > - > end = avpriv_find_start_code(start--, frag->data + frag->data_size, > &start_code); > > diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c > index 4a7bd6d466..1110fcb319 100644 > --- a/libavcodec/mpeg12dec.c > +++ b/libavcodec/mpeg12dec.c > @@ -1770,7 +1770,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, > > if (avctx->hwaccel && avctx->hwaccel->decode_slice) { > const uint8_t *buf_end, *buf_start = *buf - 4; /* include start_code */ > - int start_code = -1; > + uint32_t start_code; > buf_end = avpriv_find_start_code(buf_start + 2, *buf + buf_size, &start_code); > if (buf_end < *buf + buf_size) > buf_end -= 4; > @@ -2020,7 +2020,6 @@ static int slice_decode_thread(AVCodecContext *c, void *arg) > if (s->mb_y == s->end_mb_y) > return 0; > > - start_code = -1; > buf = avpriv_find_start_code(buf, s->gb.buffer_end, &start_code); > if (start_code < SLICE_MIN_START_CODE || start_code > SLICE_MAX_START_CODE) > return AVERROR_INVALIDDATA; > @@ -2475,7 +2474,7 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, > > for (;;) { > /* find next start code */ > - uint32_t start_code = -1; > + uint32_t start_code; > buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code); > if (start_code > 0x1ff) { > if (!skip_frame) { > diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c > index 6f8595713d..8b3fda0b03 100644 > --- a/libavcodec/mpeg4_unpack_bframes_bsf.c > +++ b/libavcodec/mpeg4_unpack_bframes_bsf.c > @@ -36,7 +36,6 @@ static void scan_buffer(const uint8_t *buf, int buf_size, > const uint8_t *end = buf + buf_size, *pos = buf; > > while (pos < end) { > - startcode = -1; > pos = avpriv_find_start_code(pos, end, &startcode); > > if (startcode == USER_DATA_STARTCODE && pos_p) { > diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c > index c5dc867d24..c991a82405 100644 > --- a/libavcodec/mpegvideo_parser.c > +++ b/libavcodec/mpegvideo_parser.c > @@ -105,7 +105,6 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s, > { > struct MpvParseContext *pc = s->priv_data; > const uint8_t *buf_end = buf + buf_size; > - uint32_t start_code; > int frame_rate_index, ext_type, bytes_left; > int frame_rate_ext_n, frame_rate_ext_d; > int top_field_first, repeat_first_field, progressive_frame; > @@ -120,7 +119,7 @@ static void mpegvideo_extract_headers(AVCodecParserContext *s, > s->repeat_pict = 0; > > while (buf < buf_end) { > - start_code= -1; > + uint32_t start_code; > buf= avpriv_find_start_code(buf, buf_end, &start_code); > bytes_left = buf_end - buf; > switch(start_code) { > diff --git a/libavcodec/utils.c b/libavcodec/utils.c > index 882f90be79..cf88e0a759 100644 > --- a/libavcodec/utils.c > +++ b/libavcodec/utils.c > @@ -950,6 +950,7 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p, > if (p >= end) > return end; > > + *state = ~0; > for (i = 0; i < 3; i++) { > uint32_t tmp = *state << 8; > *state = tmp + *(p++); > diff --git a/libavformat/rtpenc_mpv.c b/libavformat/rtpenc_mpv.c > index 4b45f51772..bb63c9bdc6 100644 > --- a/libavformat/rtpenc_mpv.c > +++ b/libavformat/rtpenc_mpv.c > @@ -51,11 +51,10 @@ void ff_rtp_send_mpegvideo(AVFormatContext *s1, const uint8_t *buf1, int size) > end_of_slice = 1; > } else { > const uint8_t *r, *r1; > - int start_code; > > r1 = buf1; > while (1) { > - start_code = -1; > + uint32_t start_code; > r = avpriv_find_start_code(r1, end, &start_code); > if((start_code & 0xFFFFFF00) == 0x100) { > /* New start code found */ It seems you didn't get why the code currently is as it is: It allows to use this function with non-contiguous input (as happens in our parsers which operate on data that is not cleanly split into packets yet (it is their job to create proper packets out of the input)). As an example, say you have a buffer that ends with 0x00 00 and the next buffer starting with 0x01 01. Then avpriv_find_start_code() will detect a start code at the beginning of the second buffer if the user passes in the same state again (and does not modify it in the meantime). You would have noticed this if you had run FATE on your patches (see https://ffmpeg.org/fate.html#Using-FATE-from-your-FFmpeg-source-directory). - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".