From patchwork Wed Aug 24 08:43:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37438 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371216pzh; Wed, 24 Aug 2022 01:44:34 -0700 (PDT) X-Google-Smtp-Source: AA6agR6lbrkKbOfEbvI/ViFPTYZFYdfobCydKkZotZKAJD4fY+tT2da8igoNofQb/HQV9WJWCeSZ X-Received: by 2002:a17:907:72cc:b0:73d:72c1:cc19 with SMTP id du12-20020a17090772cc00b0073d72c1cc19mr2148450ejc.130.1661330674274; Wed, 24 Aug 2022 01:44:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330674; cv=none; d=google.com; s=arc-20160816; b=ry64IXs121r3VV+k/IPV1JTZamfot8ZXTeVir56ZqET6Fs6BmNsDSc9v/NEpW9y+T+ /QLzRk+Wc335tn8uchavHVnlAMCwWuDbRLXyjNf4M3WXddxR1Ult0Qei50FM97Zytg0t cq33lCF5V9H8eZQ3rechsJFZV8SA5MBYehYoGkzqWSta4disJwEljYMWkrHmtrKoS5B3 eBmKo2qdbPJZSVyXltTL60FlkSadVku2bW4/R9uVwEtL87x8xCfeOBpnAKIvxsfsW8i1 qtNPeYN03fG751j0b+VXJ6SHJdV1sZY3mKBapvhm/tRMlUIqfF/uqyRYfhAX3sF1HFXm 4hEg== 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:message-id:date:to:from :delivered-to; bh=GdzmufOodqJ6BQsbbmyHl5gchOgrRk4T1fScMdFezXA=; b=RnJosMkQV26Q6dUVqgEYnQw+qwr9Ne5QeTr8EggY3Ozu2IRT/s2r/CNTc/n/AVMBg1 xg+VGTrFvceZlSC7STkZ10CTTyghvTTNi6ZDi6KcAt1+Gy6zDPr5kPVDLbMqvZdKP44V Hj4zz/rTBqNdgJ8KlVjhSu0FKULgoTrMO5rfCrfsWq8H6MnPvw7y8MuFpt94DTXMH9kv uaCDlhtD1ImgaxMbCYM5XVaR3P7y7wnaUazep3h0BubxgZZeRTurjJuxzgwg5YbLOgUh i7TPeQrCAtqpqN5XJ/WyhwtaLDliHtzonnOax1n1wsVykdfxZSvWkq3Ar3ufrEw92SN4 N6Vg== 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 w20-20020a056402269400b0043a6e796231si4234984edd.544.2022.08.24.01.44.33; Wed, 24 Aug 2022 01:44:34 -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 052EA68BA32; Wed, 24 Aug 2022 11:43:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7B8068B9C2 for ; Wed, 24 Aug 2022 11:43:44 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 5A842240D1B for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id x2WSLPCJxRWp for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 8AC44240D03 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 732363A218D; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:01 +0200 Message-Id: <20220824084318.333-1-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/18] tests/fate/mov: add a test for dv audio demuxed through dv demuxer 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HBMn+EC7GolV --- tests/fate/mov.mak | 3 +++ tests/ref/fate/mov-dvaudio | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 tests/ref/fate/mov-dvaudio diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak index 8a7218a215..9e8bb729a6 100644 --- a/tests/fate/mov.mak +++ b/tests/fate/mov.mak @@ -17,6 +17,7 @@ FATE_MOV = fate-mov-3elist \ fate-mov-bbi-elst-starts-b \ fate-mov-neg-firstpts-discard-frames \ fate-mov-stream-shorter-than-movie \ + fate-mov-dvaudio \ # FIXME: Uncomment these two lines once the test files are uploaded to the fate # server. # fate-mov-avif-demux-still-image-1-item \ @@ -104,6 +105,8 @@ fate-mov-neg-firstpts-discard-frames: CMD = framemd5 -flags +bitexact -i $(TARGE # Makes sure that no frame is dropped/duplicated with fps filter due to start_time / duration miscalculations. fate-mov-stream-shorter-than-movie: CMD = framemd5 -flags +bitexact -i $(TARGET_SAMPLES)/mov/mov_stream_shorter_than_movie.mov -vf fps=fps=24 -an +fate-mov-dvaudio: CMD = framecrc -i $(TARGET_SAMPLES)/mov/qt_dv_pal_test_cut.mov -c copy -map 0:a + fate-mov-aac-2048-priming: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_packets -print_format compact $(TARGET_SAMPLES)/mov/aac-2048-priming.mov fate-mov-zombie: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_streams -show_packets -show_frames -bitexact -print_format compact $(TARGET_SAMPLES)/mov/white_zombie_scrunch-part.mov diff --git a/tests/ref/fate/mov-dvaudio b/tests/ref/fate/mov-dvaudio new file mode 100644 index 0000000000..13e551c722 --- /dev/null +++ b/tests/ref/fate/mov-dvaudio @@ -0,0 +1,31 @@ +#tb 0: 1/48000 +#media_type 0: audio +#codec_id 0: pcm_s16le +#sample_rate 0: 48000 +#channel_layout_name 0: stereo +0, -720, -720, 1920, 7680, 0xdb43ddfd, S=1, 10 +0, 1200, 1200, 1920, 7680, 0xcd872ca8 +0, 3120, 3120, 1920, 7680, 0xa1800c21 +0, 5040, 5040, 1920, 7680, 0x87fee57a +0, 6960, 6960, 1920, 7680, 0x2e926842 +0, 8880, 8880, 1920, 7680, 0xaf141f81 +0, 10800, 10800, 1920, 7680, 0xf0bc6ad8 +0, 12720, 12720, 1920, 7680, 0x18139585 +0, 14640, 14640, 1920, 7680, 0xadf3e99e +0, 16560, 16560, 1920, 7680, 0xb18e02e3 +0, 18480, 18480, 1920, 7680, 0x4d8e9e72 +0, 20400, 20400, 1920, 7680, 0x27f3fd22 +0, 22320, 22320, 1920, 7680, 0xf896b2c0 +0, 24240, 24240, 1920, 7680, 0xf707d734 +0, 26160, 26160, 1920, 7680, 0xc3d4bf6a +0, 28080, 28080, 1920, 7680, 0xaf4f92f0 +0, 30000, 30000, 1920, 7680, 0xf72ea49d +0, 31920, 31920, 1920, 7680, 0xbd975338 +0, 33840, 33840, 1920, 7680, 0x50ab26db +0, 35760, 35760, 1920, 7680, 0x2a70b14f +0, 37680, 37680, 1920, 7680, 0x32e3ce37 +0, 39600, 39600, 1920, 7680, 0x7f5b54ec +0, 41520, 41520, 1920, 7680, 0x2cd5478f +0, 43440, 43440, 1920, 7680, 0x7dda4151 +0, 45360, 45360, 1920, 7680, 0x09b4886d +0, 47280, 47280, 1920, 7680, 0x4824062e From patchwork Wed Aug 24 08:43:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37435 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371022pzh; Wed, 24 Aug 2022 01:44:06 -0700 (PDT) X-Google-Smtp-Source: AA6agR69N0wOU94t3k6WMUX253Jjbp4mxuRvv5jNoIMVgSYXdWXxEAB+zXJ7Pj8T9AObqoPgxigP X-Received: by 2002:a17:907:a0c6:b0:73d:bf46:f06b with SMTP id hw6-20020a170907a0c600b0073dbf46f06bmr675476ejc.127.1661330646546; Wed, 24 Aug 2022 01:44:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330646; cv=none; d=google.com; s=arc-20160816; b=Eq+lDGsNpZKAQDVHGkh02BBiYk7QtpuF/dT1Gb1gUhrUs2f4gER9lMG0yFM8pmFDCo I7eSVZeD/LnwormOIi4/iBfx7g4dDysqTQJvoY6Y2agpn9YT505+oED5UEz5fK/oyi/k XurZaQ6PeaYzS1E2qYfak5v1Q0GO7nW7Fg2i8vykJvBgp5qrYS48bhvYAJRPkWL4/+Yx Aor+d5mnEfTFDjOxY6Nn5BuPUXuycW4RDwe7yP5btGzS37HNAX3t26GEdMC+PTd7jZNj HvOD4YEh9qj+fuVDxOxURUes/xVK1qaFgqT9vXrJrtEC+xrfKW5RdGy6bE9frggibnZR NUeg== 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:delivered-to; bh=bNjDypOrljTKzeccFmbRerM7QO9lDyfg8KjDO4Irhx0=; b=lHHIeW2B58k3kwbI/1TgdBD7/Zj/xJN0zKGqgKMkW2TXNceDbGlOCe2yhmdwdyFdiu 6y0wNu1o6rg6qfMvcJ7c1N8dipkTWTtSsP8tqVIO/M2wnWJ3kRwPyL9pwwHWnYEHxx9U SLTuwpnQLb6wBeAPkdSBmqhI2KJrhE03mNeXn1J0rmSH3Qh9nLiAlT55CN7uo60mxRpw YDzH3qTBgX4U4y6chIh0tzp0ID+YAxURU0z+EksLoARmJgqVkLf0wEsGHV8gsXcv7HCR OaxGVqC6OZ5uVXL2u9ruk/jWPrDMgC5cJInAYuuxAvIdiHzFgJMWHUYHilXVoaxdM7GM aicQ== 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 sg30-20020a170907a41e00b007317ed6f18bsi1427242ejc.986.2022.08.24.01.44.06; Wed, 24 Aug 2022 01:44:06 -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 CD1BF68B9F7; Wed, 24 Aug 2022 11:43:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A16B368B9C1 for ; Wed, 24 Aug 2022 11:43:43 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 28CC8240D1A for ; Wed, 24 Aug 2022 10:43:43 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id hKCg3cYHq2z5 for ; Wed, 24 Aug 2022 10:43:42 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 8F257240D0E for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 757513A0520; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:02 +0200 Message-Id: <20220824084318.333-2-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/18] lavf/dv: remove DVMuxContext declaration from dv.h 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TuOQRqE4fU2a DVMuxContext is only used inside dvenc.c, there is no reason for it to be visible outside of that file. --- libavformat/dv.h | 4 +--- libavformat/dvenc.c | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/libavformat/dv.h b/libavformat/dv.h index 160c6ab873..efced6ccf0 100644 --- a/libavformat/dv.h +++ b/libavformat/dv.h @@ -1,5 +1,5 @@ /* - * General DV muxer/demuxer + * General DV demuxer * Copyright (c) 2003 Roman Shaposhnik * * Many thanks to Dan Dennedy for providing wealth @@ -36,6 +36,4 @@ int avpriv_dv_get_packet(DVDemuxContext*, AVPacket *); int avpriv_dv_produce_packet(DVDemuxContext*, AVPacket*, uint8_t*, int, int64_t); void ff_dv_offset_reset(DVDemuxContext *c, int64_t frame_offset); -typedef struct DVMuxContext DVMuxContext; - #endif /* AVFORMAT_DV_H */ diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c index 7ef9692302..429ddcb96c 100644 --- a/libavformat/dvenc.c +++ b/libavformat/dvenc.c @@ -43,7 +43,7 @@ #define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32-bit audio -struct DVMuxContext { +typedef struct DVMuxContext { AVClass *av_class; const AVDVProfile* sys; /* current DV profile, e.g.: 525/60, 625/50 */ int n_ast; /* number of stereo audio streams (up to 2) */ @@ -55,7 +55,7 @@ struct DVMuxContext { int has_video; /* frame under construction has video */ uint8_t frame_buf[DV_MAX_FRAME_SIZE]; /* frame under construction */ AVTimecode tc; /* timecode context */ -}; +} DVMuxContext; static const int dv_aaux_packs_dist[12][9] = { { 0xff, 0xff, 0xff, 0x50, 0x51, 0x52, 0x53, 0xff, 0xff }, From patchwork Wed Aug 24 08:43:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37436 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371096pzh; Wed, 24 Aug 2022 01:44:16 -0700 (PDT) X-Google-Smtp-Source: AA6agR4bAZltOOpEpV87cdDSCnTUzDnElecNGGqFg9sQkly7CCgeHu+nkCnnPtCCFyL//3JIeElZ X-Received: by 2002:a05:6402:428e:b0:443:8279:13ea with SMTP id g14-20020a056402428e00b00443827913eamr6780983edc.294.1661330656602; Wed, 24 Aug 2022 01:44:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330656; cv=none; d=google.com; s=arc-20160816; b=WX1rgvmn/mIf6S5Mp8qJsWCsUBTot237fH6+RWwz6I3egWJyv+uuHuGtnu6Plk6lg4 GFVIHmpW8vgQw5Pv8Wn5DioiVdeKMO4HZn5cwtXaQEbucdzSIycxBu3N8/3uLw2XI0/a FOZ2AsGUZ7Cl++k5jwSWM2hl1J68D0guoUUJmTWSN987CpRLL4LZDAURNr1GdOj9hN9C epjF07BKTYBmDeMgd3kurupAYV3XivRtcl//qLn4veNGZEg/AI4C8alMeV0MnIMsU8wj BGHPcGuimMEdmScaAEVN6g5ZP9vi0te1FqLzVQHJwRyVSrQdiV/WA1CwUEPlNZRVnukU KFLg== 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:delivered-to; bh=840S2TBKuqRWASVHbhIcY1u3dorsZSk7thUckXWjcPg=; b=PenARY/lGAOqe36ZY3TCI8t4zmfXZgAAROu35+UU7XOfIyuy/MbXwuzi1PFwvGScOu /1V7OP5iu7F/Kwq3caLBE5W4I66qySPtferbWuzzfbfV1UQhhrNy9QX62+gIxjGN//He QDtCCdxx17YVyBfDZ+peeasnqFUjEDUuS6U8lkwmc5iLPDGxOBDvHbnLVStwQVGmioJJ buDmdSw67WikJhZhj9pCYH6pB4SetnUAGL8MbLxoYb8Y+H3+cW8CsKF9Bpt6u5frrUQg MnH2bQ37JRjv9g/x6LAojouVwS2GrZ2TvP2S70ciAg0Gx9MGaFUdhKCiPmRtAgwGogrm 1RXQ== 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 di9-20020a170906730900b007315a1c65b8si1964068ejc.329.2022.08.24.01.44.16; Wed, 24 Aug 2022 01:44:16 -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 E674668B9D9; Wed, 24 Aug 2022 11:43:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B39368B9C1 for ; Wed, 24 Aug 2022 11:43:44 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id B3FBF240D0E for ; Wed, 24 Aug 2022 10:43:43 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id oX231ai0Ojz6 for ; Wed, 24 Aug 2022 10:43:43 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 917C0240D18 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 7A7493A21B8; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:03 +0200 Message-Id: <20220824084318.333-3-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/18] lavf/dv: always provide avpriv_dv_* symbols 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: yv8Jhf54JkWo They are used from libavdevice. --- configure | 1 + libavformat/Makefile | 3 +-- libavformat/dv.c | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/configure b/configure index ea50c94002..f4c4ab0484 100755 --- a/configure +++ b/configure @@ -3530,6 +3530,7 @@ gdigrab_indev_deps="CreateDIBSection" gdigrab_indev_extralibs="-lgdi32" gdigrab_indev_select="bmp_decoder" iec61883_indev_deps="libiec61883" +iec61883_indev_select="dv_demuxer" jack_indev_deps="libjack" jack_indev_deps_any="sem_timedwait dispatch_dispatch_h" kmsgrab_indev_deps="libdrm" diff --git a/libavformat/Makefile b/libavformat/Makefile index f67a99f839..684bad0eb4 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -13,6 +13,7 @@ OBJS = allformats.o \ demux.o \ demux_utils.o \ dump.o \ + dv.o \ format.o \ id3v1.o \ id3v2.o \ @@ -184,7 +185,6 @@ OBJS-$(CONFIG_DSS_DEMUXER) += dss.o OBJS-$(CONFIG_DTSHD_DEMUXER) += dtshddec.o OBJS-$(CONFIG_DTS_DEMUXER) += dtsdec.o rawdec.o OBJS-$(CONFIG_DTS_MUXER) += rawenc.o -OBJS-$(CONFIG_DV_DEMUXER) += dv.o OBJS-$(CONFIG_DV_MUXER) += dvenc.o OBJS-$(CONFIG_DVBSUB_DEMUXER) += dvbsub.o rawdec.o OBJS-$(CONFIG_DVBTXT_DEMUXER) += dvbtxt.o rawdec.o @@ -711,7 +711,6 @@ SHLIBOBJS-$(CONFIG_RTP_MUXER) += golomb_tab.o jpegtables.o \ SHLIBOBJS-$(CONFIG_SPDIF_MUXER) += dca_sample_rate_tab.o # libavdevice dependencies -OBJS-$(CONFIG_IEC61883_INDEV) += dv.o # Windows resource file SHLIBOBJS-$(HAVE_GNU_WINDRES) += avformatres.o diff --git a/libavformat/dv.c b/libavformat/dv.c index 1dadaf6e62..24bacd5c53 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -28,6 +28,9 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include "config_components.h" + #include #include "avformat.h" #include "internal.h" @@ -40,6 +43,8 @@ #include "dv.h" #include "libavutil/avassert.h" +#if CONFIG_DV_DEMUXER + // Must be kept in sync with AVPacket struct DVPacket { int64_t pts; @@ -647,3 +652,21 @@ const AVInputFormat ff_dv_demuxer = { .read_seek = dv_read_seek, .extensions = "dv,dif", }; + +#else // CONFIG_DV_DEMUXER +DVDemuxContext *avpriv_dv_init_demux(AVFormatContext *s) +{ + return NULL; +} + +int avpriv_dv_get_packet(DVDemuxContext *c, AVPacket *pkt) +{ + return AVERROR(ENOSYS); +} + +int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, + uint8_t *buf, int buf_size, int64_t pos) +{ + return AVERROR(ENOSYS); +} +#endif // CONFIG_DV_DEMUXER From patchwork Wed Aug 24 08:43:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37437 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371156pzh; Wed, 24 Aug 2022 01:44:25 -0700 (PDT) X-Google-Smtp-Source: AA6agR4qzDEUxjukOtauYvGCzrx95r1xNJpTqaLFELcXkZSI5XSmhPksJvt23gD0EESoXIWdZvYs X-Received: by 2002:a17:907:7fa5:b0:730:5d54:4c24 with SMTP id qk37-20020a1709077fa500b007305d544c24mr2219229ejc.641.1661330665482; Wed, 24 Aug 2022 01:44:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330665; cv=none; d=google.com; s=arc-20160816; b=loQwtaIuAkV7o2LAGleJVk5jxhLGBNPISsjSXoqC/G61SL+cVuWxKgp5WpkzvfPQlv ZFvDGGiUdAAzsuR4S9HqIYrjLcGg+jcs08ZRS1xKPNjoMTrMA+UQLx5Wa5MRHu1DV0bt qtPwNBfP4yURBf4kUewtZdgKO1/iKXi6koq9kgtrNuPvRqGk9ui+IAHKRnPQDrKPt/gb ddPH/Ka6ht9lJt5eRqQ7p3RmYIRR+Lov3+FnqDMlT2pz4C7RbfFXsXv8C1bRLDenBAUy t/hqljW9YFzR1K7Gq/GvS4YeHtdhf0R9gcNnPJiva5Rec5GqpnvCv2uzc0VXGE/0RtXr 2xHQ== 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:delivered-to; bh=KVhm77wMxjGMI9RLPERqXLqJXYjqMrcM9Mtkz1HZ1NQ=; b=0m8MvUS5Ces+75sar3UkZxrE5cJ+ZKqt8rMoQaoY5cnJM3fWXy3Es4IpjaOp/tvY3n b1rdiH6BdFOLgkJKqbgqkhB+ifKGai74Km9qxRtHdBBeKkH4aqzmqF5IwF48OWsE+7dm 4KSjHFlBe/hYbp4JPlT2O+cHii7EN7HfyNzOadv34mx/vC3q2g3forz+1ipEroVJi5QQ fuGw7j/P9IvTETA8zo5qFRuIFvH832G1i/WDfsORi6lodVMKq1x2hkzAgCOkk/KoTlaU itLF5CuqsQl/Rngmr3182ddjVoT3a6R/EhPqkepooiK15PHeF/IKivd11+eFL8soOUdU QniQ== 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 hd37-20020a17090796a500b0073d6d81733bsi1939243ejc.678.2022.08.24.01.44.25; Wed, 24 Aug 2022 01:44:25 -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 EF1D668BA0F; Wed, 24 Aug 2022 11:43:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9EA0368B9C1 for ; Wed, 24 Aug 2022 11:43:44 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 358C0240D18 for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id tB0I9urXpK_2 for ; Wed, 24 Aug 2022 10:43:43 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 9826B240D1B for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 7EE183A21C4; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:04 +0200 Message-Id: <20220824084318.333-4-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/18] lavc/dvdec: drop the only use of DVVideoContext.avctx 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3qmGKaKhBA6r The function gets the codec context parameter directly. --- libavcodec/dvdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index f7423580aa..bad8419925 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -393,7 +393,7 @@ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg) LOCAL_ALIGNED_16(int16_t, sblock, [5 * DV_MAX_BPM], [64]); LOCAL_ALIGNED_16(uint8_t, mb_bit_buffer, [80 + AV_INPUT_BUFFER_PADDING_SIZE]); /* allow some slack */ LOCAL_ALIGNED_16(uint8_t, vs_bit_buffer, [80 * 5 + AV_INPUT_BUFFER_PADDING_SIZE]); /* allow some slack */ - const int log2_blocksize = 3-s->avctx->lowres; + const int log2_blocksize = 3 - avctx->lowres; int is_field_mode[5]; int vs_bit_buffer_damaged = 0; int mb_bit_buffer_damaged[5] = {0}; From patchwork Wed Aug 24 08:43:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37446 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371765pzh; Wed, 24 Aug 2022 01:45:48 -0700 (PDT) X-Google-Smtp-Source: AA6agR6JIzIDjd4pglGzxtFYFfD4FsFNGtAgVLaDD6TsCYsFzHr+/3JykTxWmo91uMn0q86wYyju X-Received: by 2002:a17:906:ef8c:b0:73d:c311:bffc with SMTP id ze12-20020a170906ef8c00b0073dc311bffcmr270392ejb.693.1661330748686; Wed, 24 Aug 2022 01:45:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330748; cv=none; d=google.com; s=arc-20160816; b=ErjTuGeqmwkY9WbdOxt+lSOVxGUd54lT+0a/EzUCJ4T9QfmQ9+Zbgv/D3X1pz2ORTF F8naqmPyvaqFObqHQ6tGYpBWHsede23KMUDPsAjTQvTILmCbPdOlAwmdvyTCTA7X9czX 9IiP+AK95eD1lSALyMj6nPVbY63AL4fsTtkW3UUULE35yXFo7nAC5S7piOepPpYHAOt1 IwBKMI9soKUvOq22fsg48D4pwLwNzI10SwVvcqzh9B3O9aXHrAxh9CuBarf2f4GwM/Pr 55b79bsLbnTyAvYQEvwPuet8oEUKTSF1s/lc4loLORpgJciIefbnftLHqOZpceG8qxyE vO7Q== 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:delivered-to; bh=BZMfZVZsjzATZ/tYhM2gPI/xZqJIHKls8Onzav0ccpY=; b=IjV14C671+8jYfKBXFzkuKIx8nQbJXFvh4lmHAffOGIvuY4QlCYoDE1EAZTPjL6GC+ yDLBMYwdxcGcXu/XxQLUiHVXGrpucv5+F7bsacRisoUnJnYlQ11YeYsCadP7s1gzLWEn 7dTAxSmr7dGYFRjhWx2wTSKLdcpKURe+u06y10wRpT5oUrhmyODfasGcDLOKubsIKibX vadkeNIlDnmP1bEuNQBAAtf4kvUUIyCYzMQHpX905X/V1nnTWl+lfDI8n+pHhMfZU5Uc HE3oTFT6M4eXa9zdD58OfQQVVBTmp4Zn/1hlilhtAG40uAFVhk74JOG+7lLq2EdkUPXA o7YQ== 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 nc31-20020a1709071c1f00b0073d67160cb5si1952045ejc.922.2022.08.24.01.45.48; Wed, 24 Aug 2022 01:45:48 -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 7445A68BA56; Wed, 24 Aug 2022 11:44:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D213668BA0A for ; Wed, 24 Aug 2022 11:43:48 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id B929B240D03 for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id IQqn5hFukLzn for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 99CA9240D1C for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 839103A21EA; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:05 +0200 Message-Id: <20220824084318.333-5-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/18] lavc/dv: remove ff_dvvideo_init() 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5Bt3+60ELU53 The function contains only two assignments, which are simpler to duplicate into decoder and encoder. Additionally, dvdec does not use DVVideoContext.avctx at all. --- libavcodec/dv.c | 10 ---------- libavcodec/dv.h | 2 -- libavcodec/dvdec.c | 4 +++- libavcodec/dvenc.c | 5 ++++- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/libavcodec/dv.c b/libavcodec/dv.c index e2550c4cc1..9e05aa8927 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -184,13 +184,3 @@ int ff_dv_init_dynamic_tables(DVVideoContext *ctx, const AVDVProfile *d) return 0; } - -av_cold int ff_dvvideo_init(AVCodecContext *avctx) -{ - DVVideoContext *s = avctx->priv_data; - - s->avctx = avctx; - avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; - - return 0; -} diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 331b8e846a..2b082d0140 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -97,8 +97,6 @@ enum dv_pack_type { int ff_dv_init_dynamic_tables(DVVideoContext *s, const AVDVProfile *d); -int ff_dvvideo_init(AVCodecContext *avctx); - static inline int dv_work_pool_size(const AVDVProfile *d) { int size = d->n_difchan * d->difseg_size * 27; diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index bad8419925..daee2347e6 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -240,6 +240,8 @@ static av_cold int dvvideo_decode_init(AVCodecContext *avctx) DVVideoContext *s = avctx->priv_data; int i; + avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; + ff_idctdsp_init(&s->idsp, avctx); for (i = 0; i < 64; i++) @@ -258,7 +260,7 @@ static av_cold int dvvideo_decode_init(AVCodecContext *avctx) ff_thread_once(&init_static_once, dv_init_static); - return ff_dvvideo_init(avctx); + return 0; } /* decode AC coefficients */ diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 5ba4de3213..8027feb9b3 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -55,6 +55,9 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) PixblockDSPContext pdsp; int ret; + s->avctx = avctx; + avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; + s->sys = av_dv_codec_profile2(avctx->width, avctx->height, avctx->pix_fmt, avctx->time_base); if (!s->sys) { av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video. " @@ -91,7 +94,7 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) } #endif - return ff_dvvideo_init(avctx); + return 0; } /* bit budget for AC only in 5 MBs */ From patchwork Wed Aug 24 08:43:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37434 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2370952pzh; Wed, 24 Aug 2022 01:43:56 -0700 (PDT) X-Google-Smtp-Source: AA6agR6dfUSHcavviwpcxDqEjgYSJwhEKZ3nP5+aZcr/ust9mrdtMXp2s1fMz2JTPnx+8pkoupDM X-Received: by 2002:a17:907:868a:b0:73d:6ec5:82bb with SMTP id qa10-20020a170907868a00b0073d6ec582bbmr2254578ejc.225.1661330636032; Wed, 24 Aug 2022 01:43:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330636; cv=none; d=google.com; s=arc-20160816; b=yUo6hfb5PMqAcR+PwPR1n5MQSLOTUVvMLAYPgxrONeI5bRTyBofzmQ71ff7wK3Umsq 4oFk/RYYxQn64GGEM9p0Pb+K77yrY+hAU/ROOMcGEkYHB8OwIk7iBtINmYLfXWA9tCss 3BhzBGrE1hNFpqf+JSQNzg5Pl7n3wvYDDpaoolu95jodPm1lrW7WIfivxUmPDrbeeCHN P0TL8l6w8p30G6rM8HQoWBfJnPYj3FDCVxwIKsCfaPv2mKtV++NC1joR0PYmApPbniP1 1HwT/J92H+SfLPMN/Sx8g+gV5Sbj9/UXTcCydri0b3e10RtInAfiBuBj/hPkxh41egSp qYxg== 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:delivered-to; bh=rg77o6D/MCcQAp/4uyUAtoqs+uqpYgBZZ/xvdEvnQLo=; b=mneyHfHupnp9Sepdd/TRrblugQx4hkYcd4ZitMb0fRTvyWZIs9be9KTA5nIzyD/Cak M2fCVRsABmZAbgXhzVzMJDGpNCRJXT8+4DYidIxRJ+NIFqaTOfSlfFLuT7IVgmdKIIkD TnahzXsHhbz0oIuUl8SzSKnNEfmyHFg0q73zpAIDTEAj3I4bd5KvqDEQxvo4xKLw4xxr sHPLHAXf4PQ9E8dYz6ecVJlB5ETOK3OWGx1TLQf+qtPjumleqmGSWPoXuFt3DxF0XXmN hsJc+Hrt7NIrKMywYUkT7IR4CEj1+om8IkiG+I19Pfe23+U7R31ysrNKkq9+hHozS0ER 8IQg== 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 d2-20020a170906370200b00733069541b8si1322280ejc.102.2022.08.24.01.43.54; Wed, 24 Aug 2022 01:43:56 -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 947D868B9EC; Wed, 24 Aug 2022 11:43:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 977C068B73A for ; Wed, 24 Aug 2022 11:43:43 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id A0516240D29 for ; Wed, 24 Aug 2022 10:43:42 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id 7rr_UCza8zNC for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 96A24240D1A for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 880933A21EE; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:06 +0200 Message-Id: <20220824084318.333-6-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/18] lavc/dv: do not pass DVVideoContext to ff_dv_init_dynamic_tables() 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: CfhQIOU/npLc It only needs work_chunks from it, so pass that directly. This is done in preparation to splitting DVVideoContext. --- libavcodec/dv.c | 6 +++--- libavcodec/dv.h | 2 +- libavcodec/dvdec.c | 2 +- libavcodec/dvenc.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/dv.c b/libavcodec/dv.c index 9e05aa8927..b5e54de5dd 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -162,7 +162,7 @@ static inline void dv_calc_mb_coordinates(const AVDVProfile *d, int chan, } } -int ff_dv_init_dynamic_tables(DVVideoContext *ctx, const AVDVProfile *d) +int ff_dv_init_dynamic_tables(DVwork_chunk *work_chunks, const AVDVProfile *d) { int j, i, c, s, p; @@ -174,8 +174,8 @@ int ff_dv_init_dynamic_tables(DVVideoContext *ctx, const AVDVProfile *d) p += !(j % 3); if (!(DV_PROFILE_IS_1080i50(d) && c != 0 && s == 11) && !(DV_PROFILE_IS_720p50(d) && s > 9)) { - dv_calc_mb_coordinates(d, c, s, j, &ctx->work_chunks[i].mb_coordinates[0]); - ctx->work_chunks[i++].buf_offset = p; + dv_calc_mb_coordinates(d, c, s, j, &work_chunks[i].mb_coordinates[0]); + work_chunks[i++].buf_offset = p; } p += 5; } diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 2b082d0140..286b267de2 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -95,7 +95,7 @@ enum dv_pack_type { */ #define DV_MAX_BPM 8 -int ff_dv_init_dynamic_tables(DVVideoContext *s, const AVDVProfile *d); +int ff_dv_init_dynamic_tables(DVwork_chunk *work_chunks, const AVDVProfile *d); static inline int dv_work_pool_size(const AVDVProfile *d) { diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index daee2347e6..1e2c097ed0 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -626,7 +626,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, AVFrame *frame, } if (sys != s->sys) { - ret = ff_dv_init_dynamic_tables(s, sys); + ret = ff_dv_init_dynamic_tables(s->work_chunks, sys); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Error initializing the work tables.\n"); return ret; diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 8027feb9b3..712ca325de 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -67,7 +67,7 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - ret = ff_dv_init_dynamic_tables(s, s->sys); + ret = ff_dv_init_dynamic_tables(s->work_chunks, s->sys); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Error initializing work tables.\n"); return ret; From patchwork Wed Aug 24 08:43:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37442 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371522pzh; Wed, 24 Aug 2022 01:45:12 -0700 (PDT) X-Google-Smtp-Source: AA6agR6qEuSYKQuguIfex0G/0FYXuj+QaIqd2+llCe92c25hjhYvzF9b4daFrT9NhXY8ZzgPBEEF X-Received: by 2002:a17:906:d550:b0:733:8e1a:f7 with SMTP id cr16-20020a170906d55000b007338e1a00f7mr2312196ejc.580.1661330712123; Wed, 24 Aug 2022 01:45:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330712; cv=none; d=google.com; s=arc-20160816; b=CNBhKbAqnt+03eO6vJajtfyrr/zldZYCJC5NB7kw3bXmJoRiGei3KuX6h2I40cyDzI PhCqjg7cnA96M1uSKgtc3vPylOgbTbSH38Raxv5E2ytxhJqP9GmaEAG3SGZXUJQOzNcv KhFCLn3nDt0vCiMSNxGwRAAyGXfZfZBXM6fHyrbffaVbqFCoMryBSdJgIWzS+4vVEDL0 OK0pPqLRrsQVDQjQ71kZK3XUmhwvaPkSgqYwAr/uoPRTjD+R8oisX6iZZ/vG7PinAJC3 vWDC68eJNJ9RLvgYfhep+vFbuXEaIixq004ydZ7sualy2kg48CJ4hsbP8J/Rbph9Cq43 xuFQ== 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:delivered-to; bh=BQxxWeINCB4YdlhTcPELBhtMgaMUaXVl+AdlGxpq83M=; b=EtRP/aDP3wkRj6LwG6ApR6ZAXKlBQIVwNwGYn/q5uJHCGVWzlVA+qB5tY8Isc/AT/R qFy2X1tAn1VFNSVoY+Ra3AxNWXAk8vtM4U8uHlxc0AL+v6vgYsERPX69WCEhbizX1Ula gtgeKiKV9QCgzQn6+1suZn0vOMk1L0bzZTHrbETlHOM+lgxhFeuEaJSPD1FGeDEk9ef0 u3BmOndswPfRcxOXVI8tHLDXT/CcqEIMjh6Xc0/o6lE0g2bLBezHRX5tJ3NHhfCOEDbA m65M9YX5zrux6t/zi5rX3abiDOfvQrBJYclCUSp1cLaOKutq9egJpvFvAG+I5CwKdBuX dI4w== 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 cr2-20020a170906d54200b007341ad4b028si2131506ejc.642.2022.08.24.01.45.11; Wed, 24 Aug 2022 01:45:12 -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 4B19868BA44; Wed, 24 Aug 2022 11:43:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1DB7B68B9E7 for ; Wed, 24 Aug 2022 11:43:50 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id C12AD240D22 for ; Wed, 24 Aug 2022 10:43:47 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id 4XI-VTgPL3wa for ; Wed, 24 Aug 2022 10:43:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id D41C8240D24 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 8C5C33A2209; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:07 +0200 Message-Id: <20220824084318.333-7-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/18] lavc/dv: do not pass DVVideoContext to dv_calculate_mb_xy() 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Jsy9HR/kejqL Pass the two variables needed from it directly. This is done in preparation to splitting DVVideoContext. --- libavcodec/dv.h | 5 +++-- libavcodec/dvdec.c | 2 +- libavcodec/dvenc.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 286b267de2..6430688795 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -107,7 +107,8 @@ static inline int dv_work_pool_size(const AVDVProfile *d) return size; } -static inline void dv_calculate_mb_xy(const DVVideoContext *s, +static inline void dv_calculate_mb_xy(const AVDVProfile *sys, + const uint8_t *buf, const DVwork_chunk *work_chunk, int m, int *mb_x, int *mb_y) { @@ -116,7 +117,7 @@ static inline void dv_calculate_mb_xy(const DVVideoContext *s, /* We work with 720p frames split in half. * The odd half-frame (chan == 2,3) is displaced :-( */ - if (s->sys->height == 720 && !(s->buf[1] & 0x0C)) + if (sys->height == 720 && !(buf[1] & 0x0C)) /* shifting the Y coordinate down by 72/2 macro blocks */ *mb_y -= (*mb_y > 17) ? 18 : -72; } diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 1e2c097ed0..7f9e4eb0c0 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -535,7 +535,7 @@ retry: block = &sblock[0][0]; mb = mb_data; for (mb_index = 0; mb_index < 5; mb_index++) { - dv_calculate_mb_xy(s, work_chunk, mb_index, &mb_x, &mb_y); + dv_calculate_mb_xy(s->sys, s->buf, work_chunk, mb_index, &mb_x, &mb_y); /* idct_put'ting luminance */ if ((s->sys->pix_fmt == AV_PIX_FMT_YUV420P) || diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 712ca325de..c12fce9e8b 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -866,7 +866,7 @@ static int dv_encode_video_segment(AVCodecContext *avctx, void *arg) p = dif = &s->buf[work_chunk->buf_offset * 80]; enc_blk = &enc_blks[0]; for (mb_index = 0; mb_index < 5; mb_index++) { - dv_calculate_mb_xy(s, work_chunk, mb_index, &mb_x, &mb_y); + dv_calculate_mb_xy(s->sys, s->buf, work_chunk, mb_index, &mb_x, &mb_y); qnos[mb_index] = DV_PROFILE_IS_HD(s->sys) ? 1 : 15; From patchwork Wed Aug 24 08:43:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37447 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371812pzh; Wed, 24 Aug 2022 01:45:58 -0700 (PDT) X-Google-Smtp-Source: AA6agR6BnKpFs2eRzq+iC4nWEUICvuvCV/HR4ztx/PCXpGcbx+gNqt2GRWPR7Q9h/9bF1q+gqr/E X-Received: by 2002:a17:907:b05:b0:73d:68a6:2c5a with SMTP id h5-20020a1709070b0500b0073d68a62c5amr2193151ejl.245.1661330757813; Wed, 24 Aug 2022 01:45:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330757; cv=none; d=google.com; s=arc-20160816; b=MqIl+4Xt3mcbJNVNySRsdFTNrAl1YOHaUhA84HFrhwas2r45ys8JyjIEGkpMzyHYSk WZtMHomzgKgkFE3bvt7CFCryneG/KvyeLk05ND1OyLEm0z/KjY2UeQ0BSvc4LIoxRSSZ UFgLkzO8D7kSitG+04vsf1hf/duxtnOa3TyLUwE3wnid7BLz+r2ESPV7c1IDGqxTG50w QzYT1XmIDeFoqBgk5203MsC2RpGXp1vgeGjzCVQGC0o0tBAUylbgqA8DZBIrXrMkYIPY TXY5tnvstQrT/T4DG0hdelBHjIRwH84v3cEiRuNYF4blNlJ4C3B5ZkVMgnWfwYTHX8II Whng== 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:delivered-to; bh=lEzYREe2kiHB+2zDLwfsbWpaCmd7yz7BFitkirxJcCE=; b=uGk38JvfXlywdB2JET7MeFzZXNCLzcYH9fSqzzBz1NLHb5EVFJhl89eoKuuN1Htv87 gTOmZf5gmmpjDmsgr899gwRhAHbmQVLfiXCjupcEKUm19xMEdH/Fv+TyYrLLlFi/Zj12 WcFwsL2t3zJPwbMH8ihyIs89L7jvNWC2Drhvw/ftBayoxiy0WS6VQdBJyQ1b3EM8rvil hZasAU8v+sLvk9mn84NT2CC+7NBZUcqLaAiJb6qLSiP6HGPUqQxaWjWsjYmkyMtan/Nq DNvg2icA07AMOs2s5iTxVGs58GDQKPrbjic6gr7EfF0jza49ZWoyHq/snf0nE3PvBHla mg2A== 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 sa40-20020a1709076d2800b0072e6774827asi1697089ejc.915.2022.08.24.01.45.57; Wed, 24 Aug 2022 01:45:57 -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 5899C68BA5B; Wed, 24 Aug 2022 11:44:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D486568BA0C for ; Wed, 24 Aug 2022 11:43:48 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id EE12F240D1C for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id GfwK9hPX-8oO for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id A218F240D1E for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 90E823A220D; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:08 +0200 Message-Id: <20220824084318.333-8-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/18] lavc/dvdec: stop using DVVideoContext 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: dsKWgwoIva3e The struct is quite small and the decoder and the encoder use different fields from it, so benefits from reusing it are small. This allows making the buf field const. --- libavcodec/dvdec.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 7f9e4eb0c0..444b137488 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -48,6 +48,7 @@ #include "dv_profile_internal.h" #include "dvdata.h" #include "get_bits.h" +#include "idctdsp.h" #include "internal.h" #include "put_bits.h" #include "simple_idct.h" @@ -63,6 +64,19 @@ typedef struct BlockInfo { int shift_offset; } BlockInfo; +typedef struct DVDecContext { + const AVDVProfile *sys; + const AVFrame *frame; + const uint8_t *buf; + + uint8_t dv_zigzag[2][64]; + DVwork_chunk work_chunks[4 * 12 * 27]; + uint32_t idct_factor[2 * 4 * 16 * 64]; + void (*idct_put[2])(uint8_t *dest, ptrdiff_t stride, int16_t *block); + + IDCTDSPContext idsp; +} DVDecContext; + static const int dv_iweight_bits = 14; static const uint16_t dv_iweight_88[64] = { @@ -188,7 +202,7 @@ static void dv_init_static(void) } } -static void dv_init_weight_tables(DVVideoContext *ctx, const AVDVProfile *d) +static void dv_init_weight_tables(DVDecContext *ctx, const AVDVProfile *d) { int j, i, c, s; uint32_t *factor1 = &ctx->idct_factor[0], @@ -237,7 +251,7 @@ static void dv_init_weight_tables(DVVideoContext *ctx, const AVDVProfile *d) static av_cold int dvvideo_decode_init(AVCodecContext *avctx) { static AVOnce init_static_once = AV_ONCE_INIT; - DVVideoContext *s = avctx->priv_data; + DVDecContext *s = avctx->priv_data; int i; avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; @@ -347,7 +361,7 @@ static av_always_inline void put_block_8x4(int16_t *block, uint8_t *av_restrict } } -static void dv100_idct_put_last_row_field_chroma(const DVVideoContext *s, uint8_t *data, +static void dv100_idct_put_last_row_field_chroma(const DVDecContext *s, uint8_t *data, int stride, int16_t *blocks) { s->idsp.idct(blocks + 0*64); @@ -359,7 +373,7 @@ static void dv100_idct_put_last_row_field_chroma(const DVVideoContext *s, uint8_ put_block_8x4(blocks+1*64 + 4*8, data + 8 + stride, stride<<1); } -static void dv100_idct_put_last_row_field_luma(const DVVideoContext *s, uint8_t *data, +static void dv100_idct_put_last_row_field_luma(const DVDecContext *s, uint8_t *data, int stride, int16_t *blocks) { s->idsp.idct(blocks + 0*64); @@ -380,7 +394,7 @@ static void dv100_idct_put_last_row_field_luma(const DVVideoContext *s, uint8_t /* mb_x and mb_y are in units of 8 pixels */ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg) { - const DVVideoContext *s = avctx->priv_data; + const DVDecContext *s = avctx->priv_data; DVwork_chunk *work_chunk = arg; int quant, dc, dct_mode, class1, j; int mb_index, mb_x, mb_y, last_index; @@ -614,7 +628,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, AVFrame *frame, { uint8_t *buf = avpkt->data; int buf_size = avpkt->size; - DVVideoContext *s = avctx->priv_data; + DVDecContext *s = avctx->priv_data; const uint8_t *vsc_pack; int apt, is16_9, ret; const AVDVProfile *sys; @@ -688,7 +702,7 @@ const FFCodec ff_dvvideo_decoder = { .p.long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"), .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_DVVIDEO, - .priv_data_size = sizeof(DVVideoContext), + .priv_data_size = sizeof(DVDecContext), .init = dvvideo_decode_init, FF_CODEC_DECODE_CB(dvvideo_decode_frame), .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_SLICE_THREADS, From patchwork Wed Aug 24 08:43:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37439 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371295pzh; Wed, 24 Aug 2022 01:44:43 -0700 (PDT) X-Google-Smtp-Source: AA6agR6XXU6n6hdJKsHtl4QL6NK4oic0zZ72+RA2625LzM+mFXI/MRnr4HYVMad+qqp2mPsA0Obn X-Received: by 2002:a05:6402:3881:b0:445:f8bf:5a1c with SMTP id fd1-20020a056402388100b00445f8bf5a1cmr6734091edb.13.1661330683375; Wed, 24 Aug 2022 01:44:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330683; cv=none; d=google.com; s=arc-20160816; b=mg/DahxyTHnGCOeBfSbW7WVgKVVG6XUf2VJhufIFGJmogeQOSfJsiUVt1/r2aekmk7 6/yfKo5GhnOU/59/1s01jINE65xB1Q5VY/0FQEVGf/ZkMp0Yp1QsCbq4oDRl6o3FTCBR 3bDUDENWG2tI6tgIt9nqATZMX54nzNrdnyK55Jg8LBRHXJCMva/R8liRHDaR7g+uFQvA 8hXZWyus5rsMA6tjHnwQApeYSQ2qYAJThAbe12DeMmdhNS8yxZJ8WtpSJMNj2qP20TnV 4rqPNaa0iEu7ym4GBgQ1bFJB+UubfMo4YiOMkNz/YomoGK1bNaMunUXQyhYd5G2VSaP5 M2Pg== 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:delivered-to; bh=tQ71nPACEJv6/7WiZdUC3rUhy9T3OkNs5znraM4rFBM=; b=W5Wq4jzsckzQBppaIyKzQyaeYAQZ6c/dpJaDsb8PKQfdWnU01R/gC9/JbdoWuboASB wN8JwqbTIxBXOdBsf4ciNSy0ukxh4WsXHyQYWgKy9LcgTH1SlWJ81k19guGwRVVbMR1c GS/frgcYvHkx8U0U3YE4i9OhMlHdfSE0ZY0nbm4Qmhn3/+SsOxpyd8B0WW+K0Wj5pVA3 tcZq7OYeQMcjTwScRJKEoxk+q1qFvaU5mfmqJUYSOpAWnaBEHW6UZNk556Sf/yaiW7Qv lOvRJYju0l6P+tr8T6GdOZbDKkopAfFwcUcFyb4fYYBQAsCqgiv2EDS8iSlhbK7B/rAm xcqg== 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 t5-20020a056402524500b0043e4a260ad8si4503676edd.563.2022.08.24.01.44.42; Wed, 24 Aug 2022 01:44:43 -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 2020668B83F; Wed, 24 Aug 2022 11:43:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DAEA568B9C5 for ; Wed, 24 Aug 2022 11:43:49 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 36786240D1D for ; Wed, 24 Aug 2022 10:43:47 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id Aj3p97qZyKiM for ; Wed, 24 Aug 2022 10:43:46 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id D077E240D23 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 9528E3A2229; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:09 +0200 Message-Id: <20220824084318.333-9-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/18] lavc/dvenc: stop using DVVideoContext 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: K5/qFfh/Lig0 Move the parts of it used by the encoder into a new DVEncContext and remove DVVideoContext. --- libavcodec/dv.h | 23 ----------------------- libavcodec/dvenc.c | 39 ++++++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 6430688795..859a4e6545 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -27,36 +27,13 @@ #ifndef AVCODEC_DV_H #define AVCODEC_DV_H -#include "avcodec.h" #include "dv_profile.h" -#include "me_cmp.h" -#include "idctdsp.h" typedef struct DVwork_chunk { uint16_t buf_offset; uint16_t mb_coordinates[5]; } DVwork_chunk; -typedef struct DVVideoContext { - AVClass *avclass; - const AVDVProfile *sys; - const AVFrame *frame; - AVCodecContext *avctx; - uint8_t *buf; - - uint8_t dv_zigzag[2][64]; - - void (*get_pixels)(int16_t *block, const uint8_t *pixels, ptrdiff_t linesize); - void (*fdct[2])(int16_t *block); - void (*idct_put[2])(uint8_t *dest, ptrdiff_t stride, int16_t *block); - me_cmp_func ildct_cmp; - DVwork_chunk work_chunks[4 * 12 * 27]; - uint32_t idct_factor[2 * 4 * 16 * 64]; - IDCTDSPContext idsp; - - int quant_deadzone; -} DVVideoContext; - enum dv_section_type { dv_sect_header = 0x1f, dv_sect_subcode = 0x3f, diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index c12fce9e8b..19291724e0 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -47,9 +47,26 @@ #include "pixblockdsp.h" #include "put_bits.h" +typedef struct DVEncContext { + AVClass *class; + const AVDVProfile *sys; + const AVFrame *frame; + AVCodecContext *avctx; + uint8_t *buf; + + void (*get_pixels)(int16_t *block, const uint8_t *pixels, ptrdiff_t linesize); + void (*fdct[2])(int16_t *block); + + me_cmp_func ildct_cmp; + DVwork_chunk work_chunks[4 * 12 * 27]; + + int quant_deadzone; +} DVEncContext; + + static av_cold int dvvideo_encode_init(AVCodecContext *avctx) { - DVVideoContext *s = avctx->priv_data; + DVEncContext *s = avctx->priv_data; FDCTDSPContext fdsp; MECmpContext mecc; PixblockDSPContext pdsp; @@ -220,7 +237,7 @@ static av_always_inline PutBitContext *dv_encode_ac(EncBlockInfo *bi, return pb; } -static av_always_inline int dv_guess_dct_mode(DVVideoContext *s, const uint8_t *data, +static av_always_inline int dv_guess_dct_mode(DVEncContext *s, const uint8_t *data, ptrdiff_t linesize) { if (s->avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { @@ -368,7 +385,7 @@ static const int dv_weight_720[2][64] = { 2661, 2583, 2509, 2394, 2509, 2260, 2260, 2131, } }; -static av_always_inline int dv_set_class_number_sd(DVVideoContext *s, +static av_always_inline int dv_set_class_number_sd(DVEncContext *s, int16_t *blk, EncBlockInfo *bi, const uint8_t *zigzag_scan, const int *weight, int bias) @@ -452,7 +469,7 @@ static av_always_inline int dv_set_class_number_sd(DVVideoContext *s, /* this function just copies the DCT coefficients and performs the initial (non-)quantization. */ -static inline void dv_set_class_number_hd(DVVideoContext *s, +static inline void dv_set_class_number_hd(DVEncContext *s, int16_t *blk, EncBlockInfo *bi, const uint8_t *zigzag_scan, const int *weight, int bias) @@ -510,7 +527,7 @@ static inline void dv_set_class_number_hd(DVVideoContext *s, } static av_always_inline int dv_init_enc_block(EncBlockInfo* bi, const uint8_t *data, int linesize, - DVVideoContext *s, int chroma) + DVEncContext *s, int chroma) { LOCAL_ALIGNED_16(int16_t, blk, [64]); @@ -847,7 +864,7 @@ static inline void dv_revise_cnos(uint8_t *dif, EncBlockInfo *blk, const AVDVPro static int dv_encode_video_segment(AVCodecContext *avctx, void *arg) { - DVVideoContext *s = avctx->priv_data; + DVEncContext *s = avctx->priv_data; DVwork_chunk *work_chunk = arg; int mb_index, i, j; int mb_x, mb_y, c_offset; @@ -995,7 +1012,7 @@ static int dv_encode_video_segment(AVCodecContext *avctx, void *arg) return 0; } -static inline int dv_write_pack(enum dv_pack_type pack_id, DVVideoContext *c, +static inline int dv_write_pack(enum dv_pack_type pack_id, DVEncContext *c, uint8_t *buf) { /* @@ -1115,7 +1132,7 @@ static inline int dv_write_ssyb_id(uint8_t syb_num, uint8_t fr, uint8_t *buf) return 3; } -static void dv_format_frame(DVVideoContext *c, uint8_t *buf) +static void dv_format_frame(DVEncContext *c, uint8_t *buf) { int chan, i, j, k; /* We work with 720p frames split in half. The odd half-frame is chan 2,3 */ @@ -1170,7 +1187,7 @@ static void dv_format_frame(DVVideoContext *c, uint8_t *buf) static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt, const AVFrame *frame, int *got_packet) { - DVVideoContext *s = c->priv_data; + DVEncContext *s = c->priv_data; int ret; if ((ret = ff_get_encode_buffer(c, pkt, s->sys->frame_size, 0)) < 0) @@ -1195,7 +1212,7 @@ static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt, } #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM -#define OFFSET(x) offsetof(DVVideoContext, x) +#define OFFSET(x) offsetof(DVEncContext, x) static const AVOption dv_options[] = { { "quant_deadzone", "Quantizer dead zone", OFFSET(quant_deadzone), AV_OPT_TYPE_INT, { .i64 = 7 }, 0, 1024, VE }, { NULL }, @@ -1215,7 +1232,7 @@ const FFCodec ff_dvvideo_encoder = { .p.id = AV_CODEC_ID_DVVIDEO, .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_SLICE_THREADS, - .priv_data_size = sizeof(DVVideoContext), + .priv_data_size = sizeof(DVEncContext), .init = dvvideo_encode_init, FF_CODEC_ENCODE_CB(dvvideo_encode_frame), .p.pix_fmts = (const enum AVPixelFormat[]) { From patchwork Wed Aug 24 08:43:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37451 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2372054pzh; Wed, 24 Aug 2022 01:46:34 -0700 (PDT) X-Google-Smtp-Source: AA6agR6d9rbTxGgMYYR839yts91lEJSo+COL02nnJZpvL4qB+cq/tP7T0tKdqehQDAUDHKZijk+P X-Received: by 2002:a17:907:7601:b0:73d:9f0b:d99f with SMTP id jx1-20020a170907760100b0073d9f0bd99fmr2179289ejc.300.1661330793821; Wed, 24 Aug 2022 01:46:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330793; cv=none; d=google.com; s=arc-20160816; b=A+G0KM8hyR3AvPJFjfe3i5ZWQJF67fcxywsXLKA8u1xR9CpVQbgAwqjZW/kQBd5VMw OzY2accMSuq2MPEiGXBlria1EUARswOABBBVU+dPA8/AWKaP3diCF05X553qAQ2uyYHf H0T8dlWbmKZSUSfZJQPqlQhBj+TlbJKo6MhN9DMZOl5WqlXwXo64EDsA/9ymnd/ewvpt OAF4gljUcwMtB1BUfodXfUfJrlCQ4lXe8q4BOdtACInMWc2rHog26P1yPZEaXRNBKt62 sDN+eHX4nVRQ1kX9WhkPF5Kd1aExuzmojsQ+5OxRMmZvGVa1QC+E0mxJXo7GZF4bkBMW HFAQ== 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:delivered-to; bh=Gz9lvVjrPqfNlaKnhGUOGQ2Na2k/6b1DnSJvFopnL90=; b=kPvCxCwFFMCHoDSWYxn398/h0o2furFGa6Kpxn8lPYfAKv0LRfCP3rWBoEj0XenFrf 16iBk6xzGlF7A8UXhHJVrawrRetMXLkXv0uSpCglA5lobCVB9CiPs0Sal81OjBRGTkHY osokxK1QN48mtKuWUvBYF+xVQiFwEIZtsLque/iTsKZ97hjtJ54qCYLHKMaBPqLvKDrq yhGf4TibtGUd0iSGL2JyMMhQDV6QA+5y+5KZMb9Jd7DMHYLDgQfOYs6q+XW4dgUTJKix w809+6I1TCaEMUFncMP/y2mLDoMfRgEyZ2lja1gdBUgebMHK7JTn1Wjns5GG6nnN1GSV 3kAw== 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 qk41-20020a1709077fa900b00733002330edsi1576715ejc.342.2022.08.24.01.46.33; Wed, 24 Aug 2022 01:46: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 2E83968BA7A; Wed, 24 Aug 2022 11:44:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6A76668BA22 for ; Wed, 24 Aug 2022 11:43:49 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 76ACA240D21 for ; Wed, 24 Aug 2022 10:43:46 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id Fj5q_waFaZ_1 for ; Wed, 24 Aug 2022 10:43:45 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id A1B45240D1D for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 99A2B3A2243; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:10 +0200 Message-Id: <20220824084318.333-10-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/18] lavc/dv.h: move encoder/decoder-specific code to a new header 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qfR+3Yaw/QI/ dv.h is also used by libavformat, so avoid exposing encoder/decoder code to it. --- libavcodec/dv.c | 8 ++++-- libavcodec/dv.h | 34 ---------------------- libavcodec/dv_internal.h | 62 ++++++++++++++++++++++++++++++++++++++++ libavcodec/dvdec.c | 1 + libavcodec/dvenc.c | 1 + 5 files changed, 70 insertions(+), 36 deletions(-) create mode 100644 libavcodec/dv_internal.h diff --git a/libavcodec/dv.c b/libavcodec/dv.c index b5e54de5dd..eb49978ad8 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -38,8 +38,12 @@ * DV codec. */ -#include "avcodec.h" -#include "dv.h" +#include + +#include "libavutil/pixfmt.h" + +#include "dv_internal.h" +#include "dv_profile.h" static inline void dv_calc_mb_coordinates(const AVDVProfile *d, int chan, int seq, int slot, uint16_t *tbl) diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 859a4e6545..535f01cf0b 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -27,13 +27,6 @@ #ifndef AVCODEC_DV_H #define AVCODEC_DV_H -#include "dv_profile.h" - -typedef struct DVwork_chunk { - uint16_t buf_offset; - uint16_t mb_coordinates[5]; -} DVwork_chunk; - enum dv_section_type { dv_sect_header = 0x1f, dv_sect_subcode = 0x3f, @@ -72,31 +65,4 @@ enum dv_pack_type { */ #define DV_MAX_BPM 8 -int ff_dv_init_dynamic_tables(DVwork_chunk *work_chunks, const AVDVProfile *d); - -static inline int dv_work_pool_size(const AVDVProfile *d) -{ - int size = d->n_difchan * d->difseg_size * 27; - if (DV_PROFILE_IS_1080i50(d)) - size -= 3 * 27; - if (DV_PROFILE_IS_720p50(d)) - size -= 4 * 27; - return size; -} - -static inline void dv_calculate_mb_xy(const AVDVProfile *sys, - const uint8_t *buf, - const DVwork_chunk *work_chunk, - int m, int *mb_x, int *mb_y) -{ - *mb_x = work_chunk->mb_coordinates[m] & 0xff; - *mb_y = work_chunk->mb_coordinates[m] >> 8; - - /* We work with 720p frames split in half. - * The odd half-frame (chan == 2,3) is displaced :-( */ - if (sys->height == 720 && !(buf[1] & 0x0C)) - /* shifting the Y coordinate down by 72/2 macro blocks */ - *mb_y -= (*mb_y > 17) ? 18 : -72; -} - #endif /* AVCODEC_DV_H */ diff --git a/libavcodec/dv_internal.h b/libavcodec/dv_internal.h new file mode 100644 index 0000000000..4b4151c88d --- /dev/null +++ b/libavcodec/dv_internal.h @@ -0,0 +1,62 @@ +/* + * DV encoder/decoder shared code + * Copyright (c) 2002 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_DV_INTERNAL_H +#define AVCODEC_DV_INTERNAL_H + +#include + +#include "dv.h" +#include "dv_profile.h" + +typedef struct DVwork_chunk { + uint16_t buf_offset; + uint16_t mb_coordinates[5]; +} DVwork_chunk; + +int ff_dv_init_dynamic_tables(DVwork_chunk *work_chunks, const AVDVProfile *d); + +static inline int dv_work_pool_size(const AVDVProfile *d) +{ + int size = d->n_difchan * d->difseg_size * 27; + if (DV_PROFILE_IS_1080i50(d)) + size -= 3 * 27; + if (DV_PROFILE_IS_720p50(d)) + size -= 4 * 27; + return size; +} + +static inline void dv_calculate_mb_xy(const AVDVProfile *sys, + const uint8_t *buf, + const DVwork_chunk *work_chunk, + int m, int *mb_x, int *mb_y) +{ + *mb_x = work_chunk->mb_coordinates[m] & 0xff; + *mb_y = work_chunk->mb_coordinates[m] >> 8; + + /* We work with 720p frames split in half. + * The odd half-frame (chan == 2,3) is displaced :-( */ + if (sys->height == 720 && !(buf[1] & 0x0C)) + /* shifting the Y coordinate down by 72/2 macro blocks */ + *mb_y -= (*mb_y > 17) ? 18 : -72; +} + +#endif // AVCODEC_DV_INTERNAL_H diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 444b137488..297bf7f2fb 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -45,6 +45,7 @@ #include "avcodec.h" #include "codec_internal.h" #include "dv.h" +#include "dv_internal.h" #include "dv_profile_internal.h" #include "dvdata.h" #include "get_bits.h" diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 19291724e0..1f0374b865 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -38,6 +38,7 @@ #include "avcodec.h" #include "codec_internal.h" #include "dv.h" +#include "dv_internal.h" #include "dv_profile_internal.h" #include "dv_tablegen.h" #include "encode.h" From patchwork Wed Aug 24 08:43:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37443 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371588pzh; Wed, 24 Aug 2022 01:45:22 -0700 (PDT) X-Google-Smtp-Source: AA6agR7kuvjpq/vGv9wT2zpuj8mEEHnUKSPlYqSSnH0hly+ZslMABfhw+MSBaXBLXddnyjXk8qpy X-Received: by 2002:a17:906:9bd8:b0:73d:83d1:2222 with SMTP id de24-20020a1709069bd800b0073d83d12222mr2190115ejc.557.1661330721799; Wed, 24 Aug 2022 01:45:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330721; cv=none; d=google.com; s=arc-20160816; b=xGQ/5gZUHTPvW6p09lMfGkfG8wf/kV/t17I4eCwYpsj1tWUeGcEFE2Yuxh9yQv9JM1 otpLiQyF50+khIc2M7HrJnxyFIqG4GzHLet3T50XivBjlUK3K+u+856oO9eRdl+K2eUo iRrDTPO+FGhYrO/l7YVwJOaEWXX5XlGXiACpCyo9utQP8FfhPl7+yIGMosHivso1uXX1 typil1D3tfjm++sXbVHPQ16nQMRJSAJUO6JHgWbLfr6mxtyi6v0PpmLTHqBxgWTjbiEj IfvRphX54qNBFVI5e8aC/N9XTU46LAE8N9kKVMPyZu9aGXc0xkZIoxRPhpIC1WHf1EgQ V9Jg== 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:delivered-to; bh=e57RdD7Gf2i/fgv9Y6sDz/SbKfy3SYRGpa90+Zehjg8=; b=hi3QY9EF9Pf7JEwYpx7I+m168fZftAUpnnr6BFxlVxPsVzbxD1OgWHCRpWJi1q+hSV Ii1X+uHH1Gq2TI8BhtmKnUd+WE5TGsluH+IVUfByieqGILqAnsTmJrUTcLqWNnetqhnA H3iQeB0k3jP0Dby9eqGULyJ2wHp6HJi5T6W8if7dbjg4dJ7kMWLno0SPxN5DXwEhD7iq GPeNgVNga55vhjI8NLoVDuXuP9duCZlOw3guDQGb3ALNh32cgB7tTSITsBqiTi5F3s5N T3/GXIde7eWv6ugFzVWbTCVkebrbJGeqNKTJq0uVVdOb6K7u/GQ/F2bNC4TT7aOxHI/r LVrw== 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 bm25-20020a0564020b1900b0044375e191e6si3542315edb.222.2022.08.24.01.45.21; Wed, 24 Aug 2022 01:45:21 -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 5CC0868BA4D; Wed, 24 Aug 2022 11:44:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 24E1968B9E9 for ; Wed, 24 Aug 2022 11:43:50 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 9BB2B240D1A for ; Wed, 24 Aug 2022 10:43:48 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id iHxijbVe1PPh for ; Wed, 24 Aug 2022 10:43:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id DB118240D26 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 9EACE3A224A; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:11 +0200 Message-Id: <20220824084318.333-11-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/18] lavc/dv: rename constants to follow our naming conventions 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2VdYXaZmddlw CamelCase for enum tags, ALL_CAPS for enum values. --- libavcodec/dv.h | 38 +++++++++++++++++++------------------- libavcodec/dvdec.c | 4 ++-- libavcodec/dvenc.c | 32 ++++++++++++++++---------------- libavformat/dv.c | 18 +++++++++--------- libavformat/dvenc.c | 34 +++++++++++++++++----------------- 5 files changed, 63 insertions(+), 63 deletions(-) diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 535f01cf0b..29f97b6089 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -27,27 +27,27 @@ #ifndef AVCODEC_DV_H #define AVCODEC_DV_H -enum dv_section_type { - dv_sect_header = 0x1f, - dv_sect_subcode = 0x3f, - dv_sect_vaux = 0x56, - dv_sect_audio = 0x76, - dv_sect_video = 0x96, +enum DVSectionType { + DV_SECT_HEADER = 0x1f, + DV_SECT_SUBCODE = 0x3f, + DV_SECT_VAUX = 0x56, + DV_SECT_AUDIO = 0x76, + DV_SECT_VIDEO = 0x96, }; -enum dv_pack_type { - dv_header525 = 0x3f, /* see dv_write_pack for important details on */ - dv_header625 = 0xbf, /* these two packs */ - dv_timecode = 0x13, - dv_audio_source = 0x50, - dv_audio_control = 0x51, - dv_audio_recdate = 0x52, - dv_audio_rectime = 0x53, - dv_video_source = 0x60, - dv_video_control = 0x61, - dv_video_recdate = 0x62, - dv_video_rectime = 0x63, - dv_unknown_pack = 0xff, +enum DVPackType { + DV_HEADER525 = 0x3f, /* see dv_write_pack for important details on */ + DV_HEADER625 = 0xbf, /* these two packs */ + DV_TIMECODE = 0x13, + DV_AUDIO_SOURCE = 0x50, + DV_AUDIO_CONTROL = 0x51, + DV_AUDIO_RECDATE = 0x52, + DV_AUDIO_RECTIME = 0x53, + DV_VIDEO_SOURCE = 0x60, + DV_VIDEO_CONTROL = 0x61, + DV_VIDEO_RECDATE = 0x62, + DV_VIDEO_RECTIME = 0x63, + DV_UNKNOWN_PACK = 0xff, }; #define DV_PROFILE_IS_HD(p) ((p)->video_stype & 0x10) diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 297bf7f2fb..424aa79f35 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -662,7 +662,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, AVFrame *frame, /* Determine the codec's sample_aspect ratio from the packet */ vsc_pack = buf + 80 * 5 + 48 + 5; - if (*vsc_pack == dv_video_control) { + if (*vsc_pack == DV_VIDEO_CONTROL) { apt = buf[4] & 0x07; is16_9 = (vsc_pack[2] & 0x07) == 0x02 || (!apt && (vsc_pack[2] & 0x07) == 0x07); @@ -673,7 +673,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, AVFrame *frame, return ret; /* Determine the codec's field order from the packet */ - if ( *vsc_pack == dv_video_control ) { + if ( *vsc_pack == DV_VIDEO_CONTROL ) { if (avctx->height == 720) { frame->interlaced_frame = 0; frame->top_field_first = 0; diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 1f0374b865..c0ae4c040a 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -1013,7 +1013,7 @@ static int dv_encode_video_segment(AVCodecContext *avctx, void *arg) return 0; } -static inline int dv_write_pack(enum dv_pack_type pack_id, DVEncContext *c, +static inline int dv_write_pack(enum DVPackType pack_id, DVEncContext *c, uint8_t *buf) { /* @@ -1051,8 +1051,8 @@ static inline int dv_write_pack(enum dv_pack_type pack_id, DVEncContext *c, buf[0] = (uint8_t) pack_id; switch (pack_id) { - case dv_header525: /* I can't imagine why these two weren't defined as real */ - case dv_header625: /* packs in SMPTE314M -- they definitely look like ones */ + case DV_HEADER525: /* I can't imagine why these two weren't defined as real */ + case DV_HEADER625: /* packs in SMPTE314M -- they definitely look like ones */ buf[1] = 0xf8 | /* reserved -- always 1 */ (apt & 0x07); /* APT: Track application ID */ buf[2] = (0 << 7) | /* TF1: audio data is 0 - valid; 1 - invalid */ @@ -1065,7 +1065,7 @@ static inline int dv_write_pack(enum dv_pack_type pack_id, DVEncContext *c, (0x0f << 3) | /* reserved -- always 1 */ (apt & 0x07); /* AP3: Subcode application ID */ break; - case dv_video_source: + case DV_VIDEO_SOURCE: buf[1] = 0xff; /* reserved -- always 1 */ buf[2] = (1 << 7) | /* B/W: 0 - b/w, 1 - color */ (1 << 6) | /* following CLF is valid - 0, invalid - 1 */ @@ -1076,7 +1076,7 @@ static inline int dv_write_pack(enum dv_pack_type pack_id, DVEncContext *c, c->sys->video_stype; /* signal type video compression */ buf[4] = 0xff; /* VISC: 0xff -- no information */ break; - case dv_video_control: + case DV_VIDEO_CONTROL: buf[1] = (0 << 6) | /* Copy generation management (CGMS) 0 -- free */ 0x3f; /* reserved -- always 1 */ buf[2] = 0xc8 | /* reserved -- always b11001xxx */ @@ -1097,7 +1097,7 @@ static inline int dv_write_pack(enum dv_pack_type pack_id, DVEncContext *c, return 5; } -static inline int dv_write_dif_id(enum dv_section_type t, uint8_t chan_num, +static inline int dv_write_dif_id(enum DVSectionType t, uint8_t chan_num, uint8_t seq_num, uint8_t dif_num, uint8_t *buf) { @@ -1144,14 +1144,14 @@ static void dv_format_frame(DVEncContext *c, uint8_t *buf) memset(buf, 0xff, 80 * 6); /* first 6 DIF blocks are for control data */ /* DV header: 1DIF */ - buf += dv_write_dif_id(dv_sect_header, chan+chan_offset, i, 0, buf); - buf += dv_write_pack((c->sys->dsf ? dv_header625 : dv_header525), + buf += dv_write_dif_id(DV_SECT_HEADER, chan+chan_offset, i, 0, buf); + buf += dv_write_pack((c->sys->dsf ? DV_HEADER625 : DV_HEADER525), c, buf); buf += 72; /* unused bytes */ /* DV subcode: 2DIFs */ for (j = 0; j < 2; j++) { - buf += dv_write_dif_id(dv_sect_subcode, chan+chan_offset, i, j, buf); + buf += dv_write_dif_id(DV_SECT_SUBCODE, chan+chan_offset, i, j, buf); for (k = 0; k < 6; k++) buf += dv_write_ssyb_id(k, (i < c->sys->difseg_size / 2), buf) + 5; buf += 29; /* unused bytes */ @@ -1159,12 +1159,12 @@ static void dv_format_frame(DVEncContext *c, uint8_t *buf) /* DV VAUX: 3DIFS */ for (j = 0; j < 3; j++) { - buf += dv_write_dif_id(dv_sect_vaux, chan+chan_offset, i, j, buf); - buf += dv_write_pack(dv_video_source, c, buf); - buf += dv_write_pack(dv_video_control, c, buf); + buf += dv_write_dif_id(DV_SECT_VAUX, chan+chan_offset, i, j, buf); + buf += dv_write_pack(DV_VIDEO_SOURCE, c, buf); + buf += dv_write_pack(DV_VIDEO_CONTROL, c, buf); buf += 7 * 5; - buf += dv_write_pack(dv_video_source, c, buf); - buf += dv_write_pack(dv_video_control, c, buf); + buf += dv_write_pack(DV_VIDEO_SOURCE, c, buf); + buf += dv_write_pack(DV_VIDEO_CONTROL, c, buf); buf += 4 * 5 + 2; /* unused bytes */ } @@ -1172,10 +1172,10 @@ static void dv_format_frame(DVEncContext *c, uint8_t *buf) for (j = 0; j < 135; j++) { if (j % 15 == 0) { memset(buf, 0xff, 80); - buf += dv_write_dif_id(dv_sect_audio, chan+chan_offset, i, j/15, buf); + buf += dv_write_dif_id(DV_SECT_AUDIO, chan+chan_offset, i, j/15, buf); buf += 77; /* audio control & shuffled PCM audio */ } - buf += dv_write_dif_id(dv_sect_video, chan+chan_offset, i, j, buf); + buf += dv_write_dif_id(DV_SECT_VIDEO, chan+chan_offset, i, j, buf); buf += 77; /* 1 video macroblock: 1 bytes control * 4 * 14 bytes Y 8x8 data * 10 bytes Cr 8x8 data diff --git a/libavformat/dv.c b/libavformat/dv.c index 24bacd5c53..303cecf9bb 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -87,26 +87,26 @@ static inline uint16_t dv_audio_12to16(uint16_t sample) return result; } -static const uint8_t *dv_extract_pack(const uint8_t *frame, enum dv_pack_type t) +static const uint8_t *dv_extract_pack(const uint8_t *frame, enum DVPackType t) { int offs; int c; for (c = 0; c < 10; c++) { switch (t) { - case dv_audio_source: + case DV_AUDIO_SOURCE: if (c&1) offs = (80 * 6 + 80 * 16 * 0 + 3 + c*12000); else offs = (80 * 6 + 80 * 16 * 3 + 3 + c*12000); break; - case dv_audio_control: + case DV_AUDIO_CONTROL: if (c&1) offs = (80 * 6 + 80 * 16 * 1 + 3 + c*12000); else offs = (80 * 6 + 80 * 16 * 4 + 3 + c*12000); break; - case dv_video_control: + case DV_VIDEO_CONTROL: if (c&1) offs = (80 * 3 + 8 + c*12000); else offs = (80 * 5 + 48 + 5 + c*12000); break; - case dv_timecode: + case DV_TIMECODE: offs = (80*1 + 3 + 3); break; default: @@ -139,7 +139,7 @@ static int dv_extract_audio(const uint8_t *frame, uint8_t **ppcm, const uint8_t *as_pack; uint8_t *pcm, ipcm; - as_pack = dv_extract_pack(frame, dv_audio_source); + as_pack = dv_extract_pack(frame, DV_AUDIO_SOURCE); if (!as_pack) /* No audio ? */ return 0; @@ -239,7 +239,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) const uint8_t *as_pack; int freq, stype, smpls, quant, i, ach; - as_pack = dv_extract_pack(frame, dv_audio_source); + as_pack = dv_extract_pack(frame, DV_AUDIO_SOURCE); if (!as_pack || !c->sys) { /* No audio ? */ c->ach = 0; return 0; @@ -308,7 +308,7 @@ static int dv_extract_video_info(DVDemuxContext *c, const uint8_t *frame) c->vst->avg_frame_rate = av_inv_q(c->vst->time_base); /* finding out SAR is a little bit messy */ - vsc_pack = dv_extract_pack(frame, dv_video_control); + vsc_pack = dv_extract_pack(frame, DV_VIDEO_CONTROL); apt = frame[4] & 0x07; is16_9 = (vsc_pack && ((vsc_pack[2] & 0x07) == 0x02 || (!apt && (vsc_pack[2] & 0x07) == 0x07))); @@ -328,7 +328,7 @@ static int dv_extract_timecode(DVDemuxContext* c, const uint8_t* frame, char *tc // is only relevant for NTSC systems. int prevent_df = c->sys->ltc_divisor == 25 || c->sys->ltc_divisor == 50; - tc_pack = dv_extract_pack(frame, dv_timecode); + tc_pack = dv_extract_pack(frame, DV_TIMECODE); if (!tc_pack) return 0; av_timecode_make_smpte_tc_string2(tc, av_inv_q(c->sys->time_base), AV_RB32(tc_pack + 1), prevent_df, 1); diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c index 429ddcb96c..11947aa493 100644 --- a/libavformat/dvenc.c +++ b/libavformat/dvenc.c @@ -94,7 +94,7 @@ static int dv_audio_frame_size(const AVDVProfile* sys, int frame, int sample_rat sizeof(sys->audio_samples_dist[0]))]; } -static int dv_write_pack(enum dv_pack_type pack_id, DVMuxContext *c, uint8_t* buf, int channel, int seq) +static int dv_write_pack(enum DVPackType pack_id, DVMuxContext *c, uint8_t* buf, int channel, int seq) { struct tm tc; time_t ct; @@ -103,12 +103,12 @@ static int dv_write_pack(enum dv_pack_type pack_id, DVMuxContext *c, uint8_t* bu buf[0] = (uint8_t)pack_id; switch (pack_id) { - case dv_timecode: + case DV_TIMECODE: timecode = av_timecode_get_smpte_from_framenum(&c->tc, c->frames); timecode |= 1<<23 | 1<<15 | 1<<7 | 1<<6; // biphase and binary group flags AV_WB32(buf + 1, timecode); break; - case dv_audio_source: /* AAUX source pack */ + case DV_AUDIO_SOURCE: /* AAUX source pack */ if (c->ast[channel]->codecpar->sample_rate == 44100) { audio_type = 1; } else if (c->ast[channel]->codecpar->sample_rate == 32000) @@ -132,7 +132,7 @@ static int dv_write_pack(enum dv_pack_type pack_id, DVMuxContext *c, uint8_t* bu 0; /* quantization: 0 -- 16-bit linear, 1 -- 12-bit nonlinear */ break; - case dv_audio_control: + case DV_AUDIO_CONTROL: buf[1] = (0 << 6) | /* copy protection: 0 -- unrestricted */ (1 << 4) | /* input source: 1 -- digital input */ (3 << 2) | /* compression: 3 -- no information */ @@ -147,8 +147,8 @@ static int dv_write_pack(enum dv_pack_type pack_id, DVMuxContext *c, uint8_t* bu buf[4] = (1 << 7) | /* reserved -- always 1 */ 0x7f; /* genre category */ break; - case dv_audio_recdate: - case dv_video_recdate: /* VAUX recording date */ + case DV_AUDIO_RECDATE: + case DV_VIDEO_RECDATE: /* VAUX recording date */ ct = c->start_time + av_rescale_rnd(c->frames, c->sys->time_base.num, c->sys->time_base.den, AV_ROUND_DOWN); brktimegm(ct, &tc); @@ -163,8 +163,8 @@ static int dv_write_pack(enum dv_pack_type pack_id, DVMuxContext *c, uint8_t* bu buf[4] = (((tc.tm_year % 100) / 10) << 4) | /* Tens of year */ (tc.tm_year % 10); /* Units of year */ break; - case dv_audio_rectime: /* AAUX recording time */ - case dv_video_rectime: /* VAUX recording time */ + case DV_AUDIO_RECTIME: /* AAUX recording time */ + case DV_VIDEO_RECTIME: /* VAUX recording time */ ct = c->start_time + av_rescale_rnd(c->frames, c->sys->time_base.num, c->sys->time_base.den, AV_ROUND_DOWN); brktimegm(ct, &tc); @@ -219,22 +219,22 @@ static void dv_inject_metadata(DVMuxContext *c, uint8_t* frame) /* DV subcode: 2nd and 3d DIFs */ for (j = 80; j < 80 * 3; j += 80) { for (k = 6; k < 6 * 8; k += 8) - dv_write_pack(dv_timecode, c, &buf[j+k], 0, seq); + dv_write_pack(DV_TIMECODE, c, &buf[j+k], 0, seq); if (((long)(buf-frame)/(c->sys->frame_size/(c->sys->difseg_size*c->sys->n_difchan))%c->sys->difseg_size) > 5) { /* FIXME: is this really needed ? */ - dv_write_pack(dv_video_recdate, c, &buf[j+14], 0, seq); - dv_write_pack(dv_video_rectime, c, &buf[j+22], 0, seq); - dv_write_pack(dv_video_recdate, c, &buf[j+38], 0, seq); - dv_write_pack(dv_video_rectime, c, &buf[j+46], 0, seq); + dv_write_pack(DV_VIDEO_RECDATE, c, &buf[j+14], 0, seq); + dv_write_pack(DV_VIDEO_RECTIME, c, &buf[j+22], 0, seq); + dv_write_pack(DV_VIDEO_RECDATE, c, &buf[j+38], 0, seq); + dv_write_pack(DV_VIDEO_RECTIME, c, &buf[j+46], 0, seq); } } /* DV VAUX: 4th, 5th and 6th 3DIFs */ for (j = 80*3 + 3; j < 80*6; j += 80) { - dv_write_pack(dv_video_recdate, c, &buf[j+5* 2], 0, seq); - dv_write_pack(dv_video_rectime, c, &buf[j+5* 3], 0, seq); - dv_write_pack(dv_video_recdate, c, &buf[j+5*11], 0, seq); - dv_write_pack(dv_video_rectime, c, &buf[j+5*12], 0, seq); + dv_write_pack(DV_VIDEO_RECDATE, c, &buf[j+5* 2], 0, seq); + dv_write_pack(DV_VIDEO_RECTIME, c, &buf[j+5* 3], 0, seq); + dv_write_pack(DV_VIDEO_RECDATE, c, &buf[j+5*11], 0, seq); + dv_write_pack(DV_VIDEO_RECTIME, c, &buf[j+5*12], 0, seq); } } } From patchwork Wed Aug 24 08:43:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37441 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371448pzh; Wed, 24 Aug 2022 01:45:03 -0700 (PDT) X-Google-Smtp-Source: AA6agR5vI7uwNCMYpOMGecyEtgHb1nnUKW1UTTWpqe9ZRzyVhM7oAD57aQbIF65HzEYLO8YdDrRf X-Received: by 2002:a17:906:491:b0:73d:c060:7cef with SMTP id f17-20020a170906049100b0073dc0607cefmr581503eja.111.1661330703292; Wed, 24 Aug 2022 01:45:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330703; cv=none; d=google.com; s=arc-20160816; b=sEXjyoCa0Hphagp2Jq74gQat8DxUFQNLe0XoZdIJdlJnZG8yTudnZG/epTRO5Cfk+T E5lXrzIG1OhBY+hh7uPqxG8phw+zcgthk41WkCvWUkPjWntgmbK2iopNyJpknqfJp3+A zqchRX5vE7e0QfSJk/erJmhLoPAUp/QREvEulp7v1sBjxgSpPpVwfn+IH6C30aKuEdp/ p8UYN4NknedC2mnMCQjEn3mrnpQAT6lWVDoOzYQHA/bB+C17v5a7+B9OrnBcA8d89Q4j a9Gi8LpFNZog+4fhkXEUYWBWdfMHY2/aE9+xzf5BC2sEHqJORhL3XbIpRYnCC4or/svJ yzmw== 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:delivered-to; bh=6FTIDOZwxezvEcjVFk3K+2x5XQs/3+i6avuR9BOal2Y=; b=MVa0qyNdrFy9QFrzatIujNKHbWpgrsaB/QpVcFGdGf1FLQCooIPLtl8dOZxGQKPXsz El7fBCStAnLaEKQz+9htXhYH51ON53b0BExpy6DlXkOUxoKyeAK1dGosZfLMx4ah0RKT oNz/QajjkMBQW3j4MN0XTrezIcfg0YD+bnmCBVAYjZprC5E5uvoXpugMMhqU8flFpTeg bIbS7KqIx68IRl8eHxu1lAtrnYxCzUyz30YcTeRtxQHFaMFhubjs/RlZ4m+rM+D1Adpq EuuKY3WUzbg4phuEIDxfMAA8jXKep5NkTo8DK/upnkGHP/R/malRY9dDeG4wP/Uxf6rl ALiQ== 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 nb30-20020a1709071c9e00b00730a5a456e9si1939893ejc.758.2022.08.24.01.45.02; Wed, 24 Aug 2022 01:45:03 -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 3607568BA39; Wed, 24 Aug 2022 11:43:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D8E968B823 for ; Wed, 24 Aug 2022 11:43:50 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 45FE8240D24 for ; Wed, 24 Aug 2022 10:43:48 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id 23tbr5ZpBw6W for ; Wed, 24 Aug 2022 10:43:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id E0FA9240D27 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id A33973A2257; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:12 +0200 Message-Id: <20220824084318.333-12-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/18] lavf/dv: make returning the video packet optional 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qD6Rp5Kja2Z2 The mov demuxer only returns DV audio, video packets are discarded. It first reads the data to be parsed into a packet. Then both this packet and the pointer to its data are passed together to avpriv_dv_produce_packet(), which parses the data and partially overwrites the packet. This is confusing and potentially dangerous, so just pass NULL and avoid pointless packet modification. --- libavformat/dv.c | 19 +++++++++++-------- libavformat/mov.c | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/libavformat/dv.c b/libavformat/dv.c index 303cecf9bb..f88fe62349 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -430,14 +430,17 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, } } - /* Now it's time to return video packet */ - size = dv_extract_video_info(c, buf); - pkt->data = buf; - pkt->pos = pos; - pkt->size = size; - pkt->flags |= AV_PKT_FLAG_KEY; - pkt->stream_index = c->vst->index; - pkt->pts = c->frames; + /* return the video packet, if the caller wants it */ + if (pkt) { + size = dv_extract_video_info(c, buf); + + pkt->data = buf; + pkt->pos = pos; + pkt->size = size; + pkt->flags |= AV_PKT_FLAG_KEY; + pkt->stream_index = c->vst->index; + pkt->pts = c->frames; + } c->frames++; diff --git a/libavformat/mov.c b/libavformat/mov.c index 1d8c5b2904..a2b429e52f 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -8768,7 +8768,7 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) } #if CONFIG_DV_DEMUXER if (mov->dv_demux && sc->dv_audio_container) { - ret = avpriv_dv_produce_packet(mov->dv_demux, pkt, pkt->data, pkt->size, pkt->pos); + ret = avpriv_dv_produce_packet(mov->dv_demux, NULL, pkt->data, pkt->size, pkt->pos); av_packet_unref(pkt); if (ret < 0) return ret; From patchwork Wed Aug 24 08:43:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37448 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371878pzh; Wed, 24 Aug 2022 01:46:07 -0700 (PDT) X-Google-Smtp-Source: AA6agR6nZ9lXSpmBZxQ3+8E/NYbibXbMzpNZO+q5rF7kkt/ouZEMRhcvDQKwPVAIOZzw4eWh65iw X-Received: by 2002:a05:6402:34d5:b0:446:d2e8:3a3b with SMTP id w21-20020a05640234d500b00446d2e83a3bmr6785078edc.297.1661330767044; Wed, 24 Aug 2022 01:46:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330767; cv=none; d=google.com; s=arc-20160816; b=p1AUOavWATG4zxhNHTCJUpgYxHjUcHj193Iklnjaof+ENifNjpH+pnxleWakhQVkVh sZRkpxbxd/Ex4geKtLaeUOi4WrJAnL/sYnZ7LIE0KjM6dGTLRnVwO2o4+Rf+gjHW3pDw b6ilcvw8rZBwDJIZDRfPw1KoAQu8KguBNFFjI7Al6jvZibk34ripxe6rqP71lJ5owt7H M1ccczUZUMXDUEL9IcM+6dg97OCIMNodyJOMkdoLCe2p0tWPyx+jq0v8v1aitDdgFRlK kwlS5EOkQRNTE6lQmvqRuL5lbDRwBisQeftxvdOyKbR109OpEh7+IeSI+Gi+aDfnfeNB RKqQ== 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:delivered-to; bh=rXQ8NWpoKk+RAVTxv1jsOl8laKPaxcxvDzjbY9omco4=; b=j4iQh9F7HaQAIswp0ieTkcDFyHGWIM/dhsLuG7caKK3tRdyJotgl3JfRBLf251xplX 7ILA5hP6YFghbKazbzliTlrMzl7Rtj/i68LOwTqa2npLutvzdgw2Lx/cvHnOi++qPgcJ SJe5WfeZt9RolEgJ4N/UcLPLlj/CW0QWvWcHSfdObnwZorpSmZ2+Qoik70hm8Kmsp9Tc 1T+AFb4NtyHjcOf2Sznuu5wNnlZSTP4tAg56N2GHxKq2tkaYI0U4VnEyglEz8VBKyx9H KheaRiackWBUffEPGxvjDuxTsIMXLRXIPMhiKnM1Ss1d3MvvXwlnfrcmO12wzXfoHqtJ 30dw== 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 gt17-20020a1709072d9100b0073860fb87ddsi1730324ejc.487.2022.08.24.01.46.06; Wed, 24 Aug 2022 01:46:07 -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 4A0E268BA61; Wed, 24 Aug 2022 11:44:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E4B4868BA0E for ; Wed, 24 Aug 2022 11:43:48 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 8F2FF240D20 for ; Wed, 24 Aug 2022 10:43:45 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id AjA_dwMUAMrL for ; Wed, 24 Aug 2022 10:43:45 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B8325240D1F for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id A7C273A25BE; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:13 +0200 Message-Id: <20220824084318.333-13-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/18] lavf/dv: return a meaningful error code from avpriv_dv_produce_packet() 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 9bkrGyqClNWG --- libavdevice/iec61883.c | 2 +- libavformat/dv.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavdevice/iec61883.c b/libavdevice/iec61883.c index 7223ba2e64..a4b4ce2ef8 100644 --- a/libavdevice/iec61883.c +++ b/libavdevice/iec61883.c @@ -209,7 +209,7 @@ static int iec61883_parse_queue_dv(struct iec61883_data *dv, AVPacket *pkt) dv->packets--; if (size < 0) - return -1; + return size; if (av_packet_from_data(pkt, pkt->data, pkt->size) < 0) { av_freep(&pkt->data); diff --git a/libavformat/dv.c b/libavformat/dv.c index f88fe62349..c888111789 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -404,7 +404,7 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, if (buf_size < DV_PROFILE_BYTES || !(c->sys = av_dv_frame_profile(c->sys, buf, buf_size)) || buf_size < c->sys->frame_size) { - return -1; /* Broken frame, or not enough data */ + return AVERROR_INVALIDDATA; } /* Queueing audio packet */ From patchwork Wed Aug 24 08:43:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37444 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371648pzh; Wed, 24 Aug 2022 01:45:31 -0700 (PDT) X-Google-Smtp-Source: AA6agR7doMimMymnn2eFhcjcYglk1GcB6YYSniokvRZPRSZCW905ekAD1quBVv/q0Ma37WsBTEZw X-Received: by 2002:a17:906:478f:b0:73d:7919:b23 with SMTP id cw15-20020a170906478f00b0073d79190b23mr2108199ejc.690.1661330730918; Wed, 24 Aug 2022 01:45:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330730; cv=none; d=google.com; s=arc-20160816; b=KE/MI2r2PLqQrgV8SGt6XVaou2Klc27rRtqcVqJluY3N8faMrxaYNb8fmDcUkBYYJG BwJ4m87/XBDa19kGlo4X9oTPTkvCRr1x+SyAZ5byHkqso0P3vnJPhelgfaIIlh3PjL1N wODKYcj/c2c5BRcgcuPLN2gIgeFqgd2PZXF4XurfjHBru2+RUzINaIyxf588FdZw5SmD sfpVbKAvSBQR1q1STehEMwxg9476DFJNuXduW7rh46qh2GXJmLHk9OAHNGva9n/tkj4b EeeHl9YpQsIbNwxrJFwgntX0Xf5/quV1z6cwvnsXsQ4Xb7rId2oatG+w8tHYIV8dBWh4 20Kg== 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:delivered-to; bh=NSOYgRsfrJS8BLyRx2D80nPf8wPICyWk37wKbbFO/mE=; b=nKC2Z9J1Tp08PRB9RHhjx/GxupXyyISzRHPrBFZx50iLpPK7KH4S7uYVGvFDhD0u86 SsEW6IplTB1cW6KRRagC14VmPQUUYavaVoxIVtUbUNrlioulZEQQ4qnjcls0f5E9c0AD PPojMIv0H9l4wmrZbxxP3UNr5lVmBMHI/u0Og2yd1+8Rhmaol1q5+oO1ATT+wflHUHNK HFVSIJSidGK0lyeaQOohmqdk9g2xQFBXjAF5jtoKY58B35irGJgQaCvlb2yas3oxdT1V uUpRdj1rzexbbwuMvlraXjZbIzZWn2dJ+3k3NdjxOEZYjtgJnh6guapVJXGY6FfnbcBj J8yg== 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 l14-20020a170906794e00b0073d6f592b12si2357610ejo.485.2022.08.24.01.45.30; Wed, 24 Aug 2022 01:45:30 -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 7D1D568BA0C; Wed, 24 Aug 2022 11:44:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2577B68B9EB for ; Wed, 24 Aug 2022 11:43:50 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id C2DC2240D26 for ; Wed, 24 Aug 2022 10:43:48 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id J3E4reOjV7kF for ; Wed, 24 Aug 2022 10:43:48 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id DA881240D25 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id AC3AD3A25F7; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:14 +0200 Message-Id: <20220824084318.333-14-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 14/18] lavf/dv: forward errors from avformat_new_stream() 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: PyG2Z7EWBxwv --- libavformat/dv.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/dv.c b/libavformat/dv.c index c888111789..24d6897da5 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -268,11 +268,13 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) ach = 2; /* Dynamic handling of the audio streams in DV */ + c->ach = 0; for (i = 0; i < ach; i++) { if (!c->ast[i]) { c->ast[i] = avformat_new_stream(c->fctx, NULL); if (!c->ast[i]) - break; + return AVERROR(ENOMEM); + avpriv_set_pts_info(c->ast[i], 64, c->sys->time_base.num, c->sys->time_base.den); c->ast[i]->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; c->ast[i]->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; @@ -290,7 +292,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->ast[i]->codecpar->bit_rate = 2 * dv_audio_frequency[freq] * 16; c->ast[i]->start_time = 0; } - c->ach = i; + c->ach = ach; return (c->sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */ } @@ -410,6 +412,9 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, /* Queueing audio packet */ /* FIXME: in case of no audio/bad audio we have to do something */ size = dv_extract_audio_info(c, buf); + if (size < 0) + return size; + for (i = 0; i < c->ach; i++) { c->audio_pkt[i].pos = pos; c->audio_pkt[i].size = size; From patchwork Wed Aug 24 08:43:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37445 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371711pzh; Wed, 24 Aug 2022 01:45:39 -0700 (PDT) X-Google-Smtp-Source: AA6agR4pvfW6XfK5QIpJO6QCyYNY1bmDaiZOc4Ng0HZfoByJPH+EPGEjh94U5UjI7eA+T7RDqmMS X-Received: by 2002:a05:6402:5110:b0:440:4cb1:c137 with SMTP id m16-20020a056402511000b004404cb1c137mr7135473edd.262.1661330739600; Wed, 24 Aug 2022 01:45:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330739; cv=none; d=google.com; s=arc-20160816; b=F8ibR0ckF0m0Xcy0TrifDsGBmt4vEiFPt1OI2eO22tFpC3SG8Nlb6vBDxvylVtKffr ejsCXhp1K9YqhVsXzUNqXzpbt5rLt8hp2HGUT5DNZVRiXAWGkE2Bf4w2Vjobp7cALDpb hC7BYI3i+B+4ODD50kR+UAH7hXEDHEfiwooL2aaE64cy4FpehHVaX3hWMAkPOhIp1SJG qd0KJwiiVke1eHunOHXPHCPpcKiM614NC1/ZdGXJ/hn+nMJwlm84/CAu1g+38CRKfMlG RI5qr4vybtUBUuGwsrrW+SVhkDNhXAYc+U1FyUV620ywoMXs74i3ewcPRzLi2panVX1N Cbag== 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:delivered-to; bh=yZP9ODUymt6CWtcOC3wBdpg5HZuWsqiPA7OhJPLnh/I=; b=DJ0nttanzQBpK6Mx45bIqNOtvMawazzDAWLCUnDn3ZSW82Gzla0Is7NoAhZKjULHrN lTiyARWTGpqBuT1tWZLGDgmABQjQXN4tg/E57OVMf/m3st9Jvc0RYexMGBA4PtMbhlD0 elnLCFQ23Kwewq7BsR7MzXeBsZHXpKkawwJ0lrkzVktx2NvymS03Ec+Q648Hxm3ixAq1 imKIQ0D7e0mBwH1jpyUF6ZU391QShjWKhcfFzHhG4qyzDUmWC+ZLBxNMA4I1sxJZmb1t a2gOliOrSq2hcYN7AEjMwDOjqDMtX0e5opBtUAxaNartRJNQynwYRmph4uNUK0mYI3Q4 NDlA== 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 e24-20020a056402331800b0044779824259si1273870eda.295.2022.08.24.01.45.39; Wed, 24 Aug 2022 01:45:39 -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 7C27D68B98F; Wed, 24 Aug 2022 11:44:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2ED4168B9EC for ; Wed, 24 Aug 2022 11:43:50 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 15312240D0E for ; Wed, 24 Aug 2022 10:43:49 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id k5Ebdh2hfeIK for ; Wed, 24 Aug 2022 10:43:48 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id E3186240D28 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id B0F963A260A; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:15 +0200 Message-Id: <20220824084318.333-15-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 15/18] lavf/dv: set non-changing AVStream fields only once 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: g5ElTzivbTuu --- libavformat/dv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/dv.c b/libavformat/dv.c index 24d6897da5..f65c2d596f 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -278,6 +278,8 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) avpriv_set_pts_info(c->ast[i], 64, c->sys->time_base.num, c->sys->time_base.den); c->ast[i]->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; c->ast[i]->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; + c->ast[i]->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; + c->ast[i]->start_time = 0; c->audio_pkt[i].size = 0; c->audio_pkt[i].data = c->audio_buf[i]; @@ -288,9 +290,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->audio_pkt[i].pos = -1; } c->ast[i]->codecpar->sample_rate = dv_audio_frequency[freq]; - c->ast[i]->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; c->ast[i]->codecpar->bit_rate = 2 * dv_audio_frequency[freq] * 16; - c->ast[i]->start_time = 0; } c->ach = ach; From patchwork Wed Aug 24 08:43:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37449 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371938pzh; Wed, 24 Aug 2022 01:46:16 -0700 (PDT) X-Google-Smtp-Source: AA6agR4pgcRkWwr53xuYg3tzDZqMHym8qi/d36Ojb4r4IzHzW9RIof8Qoj2+gwVeD/klauT2Vilv X-Received: by 2002:a17:906:cc13:b0:73d:a2f5:599c with SMTP id ml19-20020a170906cc1300b0073da2f5599cmr2138954ejb.691.1661330776330; Wed, 24 Aug 2022 01:46:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330776; cv=none; d=google.com; s=arc-20160816; b=lWkbdW3NJoC8+ThgOanjIenWxFlcfMXfEnL+2xAKuBN93GiT1q3Adz2Pjoyil5ic6c TtObRUZzHpHDSGCsudIVEBJM3DuLQLn2QA+nBym1f1Ee3j7iygcICyZO1y/tUlp/mE/1 m1OzHz+bflzPA0QpYECzcvW+w9s0CUAs92dKFsRZA6Z1cfWz8ZcsBgT0GEzLdYsuuZWf njwApSAFTTG7Xd4dFGD6AFp5GJ1V8ZrcYxzyPZChSR0jRvJu6wpBhuZN4Ld+4W1nhZ68 zBM/Go+R0JM2tyX3TLTQGiB4L+4Q6mQxBIEWqtT4prpT1KHW28/h+4AM3qRWrPBQLI8G MqRw== 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:delivered-to; bh=LH+MjqutURyGeli+b8n1JUNNqCsBUQbEHLMJC2rx1uc=; b=lA0fqe1iID/B2dYBbl1sX1TIO+VGVS2nVvyrIaIY4QwsjDD6PL0J1VMZ+1xvKdtuBj Ojnhj0mmbO3bG3Ww/BOR4Rkp5FXSHnGdJAah8Z8MyB9kYsvyoUARhwbik8hMSFlmev1e ok4cjCReiOsZn8GHqi5UOPpqcsUZNeF8w/H8VcY2lWPckSR0Z5b+QyVBT/QR+gVRO2tR yvwZRD7d9b7h077sPFscQhN3Zmx0tXvBTcuk1YhzRFaAFpCzFqoWkgRKRd2coDKriNGM bgrLIiyxCybvGu0QXiF6NYFBUYLXLQDVievJVkWtXRtBaeDYPEzte/tbRKvCIN+E6RT2 0O1w== 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 o6-20020aa7d3c6000000b0044687b4fb0dsi3439254edr.421.2022.08.24.01.46.15; Wed, 24 Aug 2022 01:46:16 -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 145EF68BA6B; Wed, 24 Aug 2022 11:44:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DE65768BA0D for ; Wed, 24 Aug 2022 11:43:48 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 2A120240D1E for ; Wed, 24 Aug 2022 10:43:45 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id nz6HzAL2Aup4 for ; Wed, 24 Aug 2022 10:43:44 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B9BE6240D20 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id B55703A262C; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:16 +0200 Message-Id: <20220824084318.333-16-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 16/18] lavf/dv: set audio bitrate only at stream creation 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: zg6GnM16A8G8 Demuxers are not supposed to update AVCodecParameters after the stream was seen by the caller. This value is not important enough to support dynamic updates for. --- libavformat/dv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/dv.c b/libavformat/dv.c index f65c2d596f..9c8b0a262c 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -280,6 +280,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->ast[i]->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; c->ast[i]->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; c->ast[i]->start_time = 0; + c->ast[i]->codecpar->bit_rate = 2 * dv_audio_frequency[freq] * 16; c->audio_pkt[i].size = 0; c->audio_pkt[i].data = c->audio_buf[i]; @@ -290,7 +291,6 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->audio_pkt[i].pos = -1; } c->ast[i]->codecpar->sample_rate = dv_audio_frequency[freq]; - c->ast[i]->codecpar->bit_rate = 2 * dv_audio_frequency[freq] * 16; } c->ach = ach; From patchwork Wed Aug 24 08:43:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37450 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2372003pzh; Wed, 24 Aug 2022 01:46:25 -0700 (PDT) X-Google-Smtp-Source: AA6agR6lLPJp8A0PCkfsJsPrIH2r9ZzmVmPOK6mJtORDX0tIPG8cDkVZjvr4qTiFsTNI4iS+4Cb7 X-Received: by 2002:a17:907:7256:b0:73d:9c6b:35e2 with SMTP id ds22-20020a170907725600b0073d9c6b35e2mr2182663ejc.197.1661330785077; Wed, 24 Aug 2022 01:46:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330785; cv=none; d=google.com; s=arc-20160816; b=uCzoJd78napIX235wmWjeDpmh44wPL/pnfPjtG4XEw0Hs4cWOZ7we+bR7a6HLbORQB nyJcPeAhIW/m6c0wBV99CWZAUF5kpN+6mdlB8Kt1M/FiBjr+s9AygtP6issLcPmKMrLj SD3Sqf8rUy4/Z2v9OstE5JggkPCAIVju6GITS0qgZ5GGLrKEhjoOiEqw09VjQfRPtnhN nv69SRV8BwytaoYtFy9FIsiosQKme2qhcR9DNTqv1m6csz6odhakpeYdPX1rg7UpqAJF rcbNYD9M7C8YB2kqInTchAOyfT7GMW+yQcs4C3QzIce3EQeAKASzihmRi23BZTzGgQcY Yqlg== 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:delivered-to; bh=z+rGh2yr7m7uzPY2QO64/Q2sIQVLrX5H/8UcfxkilJQ=; b=nAQMERdnOCXJQaf7Tbz3aDj0M2OFonv0aM42f3SfO57mVNiJcieNeDslbq3kJRtADj SiSW8hB68zvseMu6pWNVWHY4LRdjx+bP4c/Y7cj0SF1OR7zwoGFPDBXTwraQHv9kwkCj ilRMiNPtAdX1TZn+kiE8rYCe2OyonzLbaYPH9XkxKzuSorTcC42rzhk2yGpOG8B51LXK 4K6i/hu6krrkckhv57VA2iFhH3z6eIzPib9RAO+1r4iDJFcjl1aomSBYeDDTIAoMSNGF oQ86SUKpi9wgsLr9VXjkqtVCdNXe0tWdK2uPe7pmhtz4jgaBY9HcbS9PKKakhpv093/2 V02Q== 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 l21-20020a1709065a9500b0073d567769a9si1368656ejq.437.2022.08.24.01.46.24; Wed, 24 Aug 2022 01:46:25 -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 14C3B68BA75; Wed, 24 Aug 2022 11:44:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6327E68BA1B for ; Wed, 24 Aug 2022 11:43:49 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 3AA14240D1F for ; Wed, 24 Aug 2022 10:43:46 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id DSAJqzMzYDs5 for ; Wed, 24 Aug 2022 10:43:45 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B9CCC240D21 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id B9DEA3A2638; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:17 +0200 Message-Id: <20220824084318.333-17-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 17/18] lavf/dv: do not update AVCodecParameters.sample_rate while demuxing 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4uHQ9spHOoVe Demuxers are not allowed to do this and few callers, if any, will handle this correctly. Send the AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE side data instead. --- libavformat/dv.c | 49 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/libavformat/dv.c b/libavformat/dv.c index 9c8b0a262c..ffed1a7a90 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -33,6 +33,7 @@ #include #include "avformat.h" +#include "demux.h" #include "internal.h" #include "libavcodec/dv_profile.h" #include "libavcodec/dv.h" @@ -46,7 +47,7 @@ #if CONFIG_DV_DEMUXER // Must be kept in sync with AVPacket -struct DVPacket { +typedef struct DVPacket { int64_t pts; uint8_t *data; int size; @@ -54,7 +55,10 @@ struct DVPacket { int flags; int64_t pos; int64_t duration; -}; + + int sample_rate; + int last_sample_rate; +} DVPacket; struct DVDemuxContext { const AVDVProfile* sys; /* Current DV profile. E.g.: 525/60, 625/50 */ @@ -237,7 +241,7 @@ static int dv_extract_audio(const uint8_t *frame, uint8_t **ppcm, static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) { const uint8_t *as_pack; - int freq, stype, smpls, quant, i, ach; + int freq, stype, smpls, quant, i, ach, sr; as_pack = dv_extract_pack(frame, DV_AUDIO_SOURCE); if (!as_pack || !c->sys) { /* No audio ? */ @@ -255,6 +259,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) "Unrecognized audio sample rate index (%d)\n", freq); return 0; } + sr = dv_audio_frequency[freq]; if (stype > 3) { av_log(c->fctx, AV_LOG_ERROR, "stype %d is invalid\n", stype); @@ -280,7 +285,10 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->ast[i]->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; c->ast[i]->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; c->ast[i]->start_time = 0; - c->ast[i]->codecpar->bit_rate = 2 * dv_audio_frequency[freq] * 16; + c->ast[i]->codecpar->bit_rate = 2 * sr * 16; + + c->ast[i]->codecpar->sample_rate = sr; + c->audio_pkt[i].last_sample_rate = sr; c->audio_pkt[i].size = 0; c->audio_pkt[i].data = c->audio_buf[i]; @@ -290,7 +298,8 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame) c->audio_pkt[i].duration = 0; c->audio_pkt[i].pos = -1; } - c->ast[i]->codecpar->sample_rate = dv_audio_frequency[freq]; + + c->audio_pkt[i].sample_rate = sr; } c->ach = ach; @@ -380,16 +389,26 @@ int avpriv_dv_get_packet(DVDemuxContext *c, AVPacket *pkt) for (i = 0; i < c->ach; i++) { if (c->ast[i] && c->audio_pkt[i].size) { - pkt->size = c->audio_pkt[i].size; - pkt->data = c->audio_pkt[i].data; - pkt->stream_index = c->audio_pkt[i].stream_index; - pkt->flags = c->audio_pkt[i].flags; - pkt->pts = c->audio_pkt[i].pts; - pkt->duration = c->audio_pkt[i].duration; - pkt->pos = c->audio_pkt[i].pos; - - c->audio_pkt[i].size = 0; - size = pkt->size; + DVPacket *dpkt = &c->audio_pkt[i]; + + pkt->size = dpkt->size; + pkt->data = dpkt->data; + pkt->stream_index = dpkt->stream_index; + pkt->flags = dpkt->flags; + pkt->pts = dpkt->pts; + pkt->duration = dpkt->duration; + pkt->pos = dpkt->pos; + + dpkt->size = 0; + size = pkt->size; + + if (dpkt->last_sample_rate != dpkt->sample_rate) { + int ret = ff_add_param_change(pkt, 0, 0, dpkt->sample_rate, 0, 0); + if (ret < 0) + return ret; + dpkt->last_sample_rate = dpkt->sample_rate; + } + break; } } From patchwork Wed Aug 24 08:43:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37440 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2371381pzh; Wed, 24 Aug 2022 01:44:53 -0700 (PDT) X-Google-Smtp-Source: AA6agR7dEyWT1Pow/QQhwURWYox3m0KTdhHD7AVUXhkVSwUkYGxz12qqkYXcA7mG9oec1clkSHwh X-Received: by 2002:a17:907:760b:b0:73d:b5bc:feb6 with SMTP id jx11-20020a170907760b00b0073db5bcfeb6mr1743203ejc.407.1661330693352; Wed, 24 Aug 2022 01:44:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661330693; cv=none; d=google.com; s=arc-20160816; b=EOVhN8D5dtM6wkgg0/PSXTtIG3Dr9q7A21PsddMlWcSwWUv1k81Yt/ZtAQ5n7xCqkd vP+9rdASLas2ysPkgV5I9iCAoCfN1A755Hn08mCoYgy7xlaNfm9Hzk8hXz109PdT08K0 28oxdIg8iQziZlj+Sz0uj6CG97chowlDfpA4COMi18WmR62UtDNPhjxvX2w8zkY1rPoz LfmG3ncNSCZ/gK5h1whS7StMBcc0WwMHwFqRX8W1nOIxM0illYZbJTaP3EslYsDzFZXd e6+dFlWKDZ/wGFwLFbekb6TrrdJw/8RjZnIG63Wn9mClygVOwvnRx/jUZdYUTGxMhE+M AMOA== 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:delivered-to; bh=vKQKpgkRdQ1DNTHjMLmfgiJX5/vCHEa2fwjdC2JWV/0=; b=QKm3uihyfbsy2E9Qxv8CR0iemgnlFai+pvgDt5i7eKN7LdqmECcWGE+1i5Rubn9j+o UeJlZUxRhkMTdGUXWJ3qTnigHMbYNxdZp+fhiKPDl2z0CF0ehnmEXa7CRO9bYcDC4gUT r3T3f3ln2OXABE7koVdUO6OKJ3E++GvD3qbMvZkXIdOsWxBufL8jVAcoIcDRRUy99CEK uJ0++lkCSYog+EXoNrwNq9N28oQJ21L0T9B2N6f78lPOIciOMYyRBPHuHC2CbkgXvfxb fTsivTUw84PYYXNLGrRMF+BcryontEHRohIRCoalvKxyDRzKG6qyaVtIRN9ynD2HbrRC 1uRg== 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 hp40-20020a1709073e2800b0073dbba48eecsi948418ejc.298.2022.08.24.01.44.52; Wed, 24 Aug 2022 01:44:53 -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 1E02568BA3D; Wed, 24 Aug 2022 11:43:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E47DE68B823 for ; Wed, 24 Aug 2022 11:43:49 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 7E38C240D23 for ; Wed, 24 Aug 2022 10:43:47 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id h1ZOjM7TeLlW for ; Wed, 24 Aug 2022 10:43:46 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id C68BB240D22 for ; Wed, 24 Aug 2022 10:43:41 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id BF2453A263E; Wed, 24 Aug 2022 10:43:35 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Aug 2022 10:43:18 +0200 Message-Id: <20220824084318.333-18-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220824084318.333-1-anton@khirnov.net> References: <20220824084318.333-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 18/18] lavf/dv: do not continuously set stream timebase 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: v8SeiRuC1CX/ The code will call avpriv_set_pts_info() for each video frame, possibly setting a different timebase if the stream framerate changes. This violates API conventions, as the timebase is supposed to stay constant after stream creation. Change the demuxer to set a single timebase that is granular enough to handle all supported DV framerates. The seek tests change slightly because the new timebase is more granular. --- libavformat/dv.c | 16 ++++++++++++---- tests/ref/seek/lavf-dv | 30 +++++++++++++++--------------- tests/ref/seek/vsynth_lena-dv | 24 ++++++++++++------------ tests/ref/seek/vsynth_lena-dv-411 | 24 ++++++++++++------------ tests/ref/seek/vsynth_lena-dv-50 | 24 ++++++++++++------------ 5 files changed, 63 insertions(+), 55 deletions(-) diff --git a/libavformat/dv.c b/libavformat/dv.c index ffed1a7a90..e2f7a6d313 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -69,6 +69,8 @@ struct DVDemuxContext { uint8_t audio_buf[4][8192]; int ach; int frames; + + int64_t next_pts; }; static inline uint16_t dv_audio_12to16(uint16_t sample) @@ -314,8 +316,6 @@ static int dv_extract_video_info(DVDemuxContext *c, const uint8_t *frame) par = c->vst->codecpar; - avpriv_set_pts_info(c->vst, 64, c->sys->time_base.num, - c->sys->time_base.den); c->vst->avg_frame_rate = av_inv_q(c->vst->time_base); /* finding out SAR is a little bit messy */ @@ -360,6 +360,8 @@ static int dv_init_demux(AVFormatContext *s, DVDemuxContext *c) c->vst->codecpar->bit_rate = 25000000; c->vst->start_time = 0; + avpriv_set_pts_info(c->vst, 64, 1, 60000); + /* Audio streams are added later as they are encountered. */ s->ctx_flags |= AVFMTCTX_NOHEADER; @@ -463,7 +465,10 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, pkt->size = size; pkt->flags |= AV_PKT_FLAG_KEY; pkt->stream_index = c->vst->index; - pkt->pts = c->frames; + pkt->pts = c->next_pts; + pkt->duration = av_rescale_q(1, c->sys->time_base, c->vst->time_base); + + c->next_pts += pkt->duration; } c->frames++; @@ -477,11 +482,12 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) FFFormatContext *const si = ffformatcontext(s); const int frame_size = c->sys->frame_size; + int64_t frame_count = av_rescale_q(timestamp, c->vst->time_base, c->sys->time_base); int64_t offset; int64_t size = avio_size(s->pb) - si->data_offset; int64_t max_offset = ((size - 1) / frame_size) * frame_size; - offset = frame_size * timestamp; + offset = frame_size * frame_count; if (size >= 0 && offset > max_offset) offset = max_offset; @@ -494,6 +500,8 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, void ff_dv_offset_reset(DVDemuxContext *c, int64_t frame_offset) { c->frames = frame_offset; + if (c->sys) + c->next_pts = av_rescale_q(frame_offset, c->sys->time_base, c->vst->time_base); c->audio_pkt[0].size = c->audio_pkt[1].size = 0; c->audio_pkt[2].size = c->audio_pkt[3].size = 0; } diff --git a/tests/ref/seek/lavf-dv b/tests/ref/seek/lavf-dv index f63e4460be..356f05546b 100644 --- a/tests/ref/seek/lavf-dv +++ b/tests/ref/seek/lavf-dv @@ -3,50 +3,50 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:0 ts: 2.560000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 1.480000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 0.365002 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 ret: 0 st:-1 flags:1 ts:-0.740831 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:0 ts: 2.160000 +ret: 0 st: 0 flags:0 ts: 2.153333 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 -ret: 0 st: 0 flags:1 ts: 1.040000 +ret: 0 st: 0 flags:1 ts: 1.047500 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 ret: 0 st: 1 flags:0 ts:-0.040000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 2.840000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 ret: 0 st: 1 flags:0 ts: 1.320000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 0.200000 -ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts:-0.904994 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.989173 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.880000 +ret: 0 st: 0 flags:0 ts: 0.883333 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.240000 +ret: 0 st: 0 flags:1 ts:-0.222500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:0 ts: 2.680000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 1.560000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 ret: 0 st:-1 flags:1 ts:-0.645825 diff --git a/tests/ref/seek/vsynth_lena-dv b/tests/ref/seek/vsynth_lena-dv index d318794157..afed1fbe72 100644 --- a/tests/ref/seek/vsynth_lena-dv +++ b/tests/ref/seek/vsynth_lena-dv @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.576668 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.360000 +ret: 0 st: 0 flags:0 ts: 0.365000 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.760000 +ret: 0 st: 0 flags:1 ts:-0.740833 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.153336 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.047503 ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.040000 +ret: 0 st: 0 flags:0 ts:-0.058333 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.840000 +ret: 0 st: 0 flags:1 ts: 2.835833 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.306672 ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.920000 +ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.000000 +ret: 0 st: 0 flags:1 ts: 1.989167 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 0.883340 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:0 ts: 2.680000 +ret: 0 st: 0 flags:0 ts: 2.671667 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 -ret: 0 st: 0 flags:1 ts: 1.560000 +ret: 0 st: 0 flags:1 ts: 1.565833 ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 diff --git a/tests/ref/seek/vsynth_lena-dv-411 b/tests/ref/seek/vsynth_lena-dv-411 index d318794157..afed1fbe72 100644 --- a/tests/ref/seek/vsynth_lena-dv-411 +++ b/tests/ref/seek/vsynth_lena-dv-411 @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.576668 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.360000 +ret: 0 st: 0 flags:0 ts: 0.365000 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.760000 +ret: 0 st: 0 flags:1 ts:-0.740833 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.153336 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.047503 ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.040000 +ret: 0 st: 0 flags:0 ts:-0.058333 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.840000 +ret: 0 st: 0 flags:1 ts: 2.835833 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.306672 ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.920000 +ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.000000 +ret: 0 st: 0 flags:1 ts: 1.989167 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 0.883340 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:0 ts: 2.680000 +ret: 0 st: 0 flags:0 ts: 2.671667 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 -ret: 0 st: 0 flags:1 ts: 1.560000 +ret: 0 st: 0 flags:1 ts: 1.565833 ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 diff --git a/tests/ref/seek/vsynth_lena-dv-50 b/tests/ref/seek/vsynth_lena-dv-50 index fae6d1b225..3b1d69ffa6 100644 --- a/tests/ref/seek/vsynth_lena-dv-50 +++ b/tests/ref/seek/vsynth_lena-dv-50 @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:13536000 size:288000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:5760000 size:288000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 ret: 0 st:-1 flags:0 ts: 2.576668 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:10656000 size:288000 -ret: 0 st: 0 flags:0 ts: 0.360000 +ret: 0 st: 0 flags:0 ts: 0.365000 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:2592000 size:288000 -ret: 0 st: 0 flags:1 ts:-0.760000 +ret: 0 st: 0 flags:1 ts:-0.740833 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 ret: 0 st:-1 flags:0 ts: 2.153336 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:1 ts: 1.047503 ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:7488000 size:288000 -ret: 0 st: 0 flags:0 ts:-0.040000 +ret: 0 st: 0 flags:0 ts:-0.058333 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:1 ts: 2.840000 +ret: 0 st: 0 flags:1 ts: 2.835833 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:12384000 size:288000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:4608000 size:288000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:0 ts: 1.306672 ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:9504000 size:288000 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:1440000 size:288000 -ret: 0 st: 0 flags:0 ts:-0.920000 +ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:1 ts: 2.000000 +ret: 0 st: 0 flags:1 ts: 1.989167 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:0 ts: 0.883340 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:6336000 size:288000 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:0 ts: 2.680000 +ret: 0 st: 0 flags:0 ts: 2.671667 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 -ret: 0 st: 0 flags:1 ts: 1.560000 +ret: 0 st: 0 flags:1 ts: 1.565833 ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:11232000 size:288000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:3456000 size:288000