From patchwork Sat Sep 18 03:53:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soft Works X-Patchwork-Id: 30349 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp2792062iov; Fri, 17 Sep 2021 20:54:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZazzUbPeUDvpuP2+dT2/Y3xUPKuX2QUkvLYYrbsj2/lHJlQcullBcp44oVjUVk3m8PkBQ X-Received: by 2002:a17:907:2cc6:: with SMTP id hg6mr16347459ejc.449.1631937267999; Fri, 17 Sep 2021 20:54:27 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h1si8883406edk.285.2021.09.17.20.54.27; Fri, 17 Sep 2021 20:54:27 -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; dkim=neutral (body hash did not verify) header.i=@hotmail.com header.s=selector1 header.b="EMU/XUOP"; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hotmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3A1AB68B208; Sat, 18 Sep 2021 06:53:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11olkn2054.outbound.protection.outlook.com [40.92.18.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 95ABA68B1FF for ; Sat, 18 Sep 2021 06:53:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mcvt6DMMoIvK7cqyUz+karoGPotRNyUWThRovQSGXCHID6mhSv2CwwgMmoOwvxQANn0OuRpHiikznVxp1iGFcZD2sOo5gkCwhGGpGNjlpODPYeSN8PbN2fNwuUq2233yu4QVHQX2e8YmGm/DuRVhgsxKAnXmN8+CzSp5urYDFZJhAuNgRTyqzNBh7kZtXQ6KQp8AHS6ACKpiP8Ezh8QIXEIzwonSw8hlCG4rbFWrbD/ffy8Fr0J/jPnQCmfKNwlWINu75ooXmdcx5IiNXoUxRwCIg77oPsEQTuE9lmcQQrictCYudVJJ9TZ/B/zCbowgnwW3XJEurKI3+cybfOV6xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=aqv6slxUggHk3KxScMa1FvkVo4oJF/4VN9icEPRh++U=; b=bMnSB1flrx5s9jGP0B0TtLAISn6VFlIGJpbxIpedxlFZuna308EhYA4bQx8sEOl7qMWM16GxL7139dgb2kqXX5vFK2vHeM+55MDv8aSf/QKixwqdLEAwoVXbLxywHrGy6o9BR1Lm04iuS9jSwQdCXtsguJhyZB7O91SOipIA1Cbtyff34j6fjdWHE7A7YON17YkDRwBcPY3T6hWgB+59WmYTUaUlry20/H1k2VY9APLirYhyiryiEkAQLc/MjVX2omQiUf+agUZddPnwl2fRbqKy5+rkA6DjhhS9jojiFapVjiFD1UsCUF5CpHH3gN96WyA0Ezgqs8eOpxbenUAQUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aqv6slxUggHk3KxScMa1FvkVo4oJF/4VN9icEPRh++U=; b=EMU/XUOP881UlRTxKkTveAXou44PLq6WIahilz2XkeLd69ZxbyCQr8Wm8rAc1VJmF9Vs10RGmI478XyoJAi92JieK8rfJAPMKBzJYCoqA2j/VeXyilauWE51aURPzxjPt8/VW1ocIULuVAFZT4uxOEl4GttcyqVdbF8i5zOPy17ITjU+C5KoD5dOzca6ltEFy0HfmZvpPp2oTVd5sIeCfZ8VkUp2rQ9TSIKGyHz18Sm/45YZKlAMOV/lds25QNHXBZ/wiRWEyalmne7XQl/p7Ovn6Q1qjNAoytl8BEWlBsFKKGacOQsXoTG7ymgKJbsCpHKilw79Z7FNaxVQ8eH6DQ== Received: from BYAPR04MB5976.namprd04.prod.outlook.com (2603:10b6:a03:f2::32) by BY5PR04MB6865.namprd04.prod.outlook.com (2603:10b6:a03:219::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Sat, 18 Sep 2021 03:53:35 +0000 Received: from BYAPR04MB5976.namprd04.prod.outlook.com ([fe80::ecc6:937b:3740:1816]) by BYAPR04MB5976.namprd04.prod.outlook.com ([fe80::ecc6:937b:3740:1816%6]) with mapi id 15.20.4523.015; Sat, 18 Sep 2021 03:53:35 +0000 From: Soft Works To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH v7 10/12] avcodec/ass_split: Extend ass dialog parsing Thread-Index: AQHXrEDB28iNMWrVMUSzycQE78vsOg== Date: Sat, 18 Sep 2021 03:53:35 +0000 Message-ID: References: <0929c32d8c695549bb9848e24113a07810118645.1631934103.git.softworkz@hotmail.com> <5a0310cb87ef181680b26efc53f0eea6b9e939fe.1631934104.git.softworkz@hotmail.com> <42f16c26e63b3ffec87acef3b2e95a4085b4b86b.1631934104.git.softworkz@hotmail.com> <5481c55bd4e5d17194e6b87b13760fb6c1186377.1631934104.git.softworkz@hotmail.com> <764bd747b932dd5bc54c2c8cbd9c8894def71c7f.1631934104.git.softworkz@hotmail.com> <9c92f98fcfa2683a7602ec85e17dc51c5a79c7b9.1631934104.git.softworkz@hotmail.com> <98d97c1ba7d0160e53327ca17ad30962e61d34b6.1631934104.git.softworkz@hotmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Asl6SNvQ4neSlJQPSEIv7SUiOoBQL8/U] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: eeda9cd6-4e91-42cd-9540-08d97a57e3ea x-ms-traffictypediagnostic: BY5PR04MB6865: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QXs/7GqNSa9UKly5Q5RHaidZW4dOiQrt1ONfm3SAaZgcbixaHNS9OI00XZiXIMOlFNlGgIvI+eu3Dq3+VvVLAxt54lHNu7OeTF8Lu6uvBw29Jc6R9CPr3YbsHpyT5xfkensKgKAT9YdNl548yRnfBp1fcmPzzaN/Oh9D8lMro63GBW5fIElOrxiy8MB6p0E6ZREvXPrLGp+BvbgwpWhYk77865ZxdQh/vr3/U+oz7QiklwbFO6Lz+3ShajBSG/y9ksly1NmB+Wnedq2lwNYWcZFonvLWhNCca//xsge8PRuaO14f/8m52aI98t6XKWWhi5AbetzhCAwD5KnLlxbGv3x4p8G8gA8gZwpILwxsdrOMoFyBytFsn8fVUFgLF0EaScKMlwEvYTnMLdTKP3Hfp9Yj1O5PW2NVTIi/7/eSCBhHOqXFGOg0aWDaBE73OShJ x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: NQLTOabUbu10y/nII03iTCvaLCb+XEMQTNFnxNORi3TEJykFyEA9hes6ZCnLau4222QxF+zYcL46H9HA9ufHiWWsG8/H8itpur+5a4eRcuiOmH4fAFAfquw9hh7YdXG9SDWi6tgLHg5bg6GcLY61uA== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-3174-20-msonline-outlook-529c7.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR04MB5976.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: eeda9cd6-4e91-42cd-9540-08d97a57e3ea X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2021 03:53:35.3101 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR04MB6865 Subject: [FFmpeg-devel] [PATCH v7 10/12] avcodec/ass_split: Extend ass dialog parsing 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: +HBoq5YuEwzD Signed-off-by: softworkz --- libavcodec/ass_split.c | 12 ++++++++++-- libavcodec/ass_split.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libavcodec/ass_split.c b/libavcodec/ass_split.c index 05c5453e53..e58585d3da 100644 --- a/libavcodec/ass_split.c +++ b/libavcodec/ass_split.c @@ -497,8 +497,8 @@ int ff_ass_split_override_codes(const ASSCodesCallbacks *callbacks, void *priv, while (*buf == '\\') { char style[2], c[2], sep[2], c_num[2] = "0", tmp[128] = {0}; unsigned int color = 0xFFFFFFFF; - int len, size = -1, an = -1, alpha = -1; - int x1, y1, x2, y2, t1 = -1, t2 = -1; + int len, size = -1, an = -1, alpha = -1, scale = 0; + int x1, y1, x2, y2, t1 = -1, t2 = -1, accel = 1; if (sscanf(buf, "\\%1[bisu]%1[01\\}]%n", style, c, &len) > 1) { int close = c[0] == '0' ? 1 : c[0] == '1' ? 0 : -1; len += close != -1; @@ -546,6 +546,14 @@ int ff_ass_split_override_codes(const ASSCodesCallbacks *callbacks, void *priv, } else if (sscanf(buf, "\\org(%d,%d)%1[\\}]%n", &x1, &y1, sep, &len) > 2) { if (callbacks->origin) callbacks->origin(priv, x1, y1); + } else if (sscanf(buf, "\\t(%d,%d,%1[\\}]%n", &t1, &t2, sep, &len) > 2 || + sscanf(buf, "\\t(%d,%d,%d,%1[\\}]%n", &t1, &t2, &accel, sep, &len) > 3) { + if (callbacks->animate) + callbacks->animate(priv, t1, t2, accel, tmp); + } else if (sscanf(buf, "\\p%1[\\}]%n", sep, &len) > 0 || + sscanf(buf, "\\p%u%1[\\}]%n", &scale, sep, &len) > 1) { + if (callbacks->drawing_mode) + callbacks->drawing_mode(priv, scale); } else { len = strcspn(buf+1, "\\}") + 2; /* skip unknown code */ } diff --git a/libavcodec/ass_split.h b/libavcodec/ass_split.h index a45fb9b8a1..bda7bb27db 100644 --- a/libavcodec/ass_split.h +++ b/libavcodec/ass_split.h @@ -156,7 +156,9 @@ typedef struct { * @{ */ void (*move)(void *priv, int x1, int y1, int x2, int y2, int t1, int t2); + void (*animate)(void *priv, int t1, int t2, int accel, char *style); void (*origin)(void *priv, int x, int y); + void (*drawing_mode)(void *priv, int scale); /** @} */ /**