From patchwork Tue Jul 23 19:23:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aran.Clauson@wwu.edu X-Patchwork-Id: 14049 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3854C449C47 for ; Tue, 23 Jul 2019 22:23:24 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 15D61689ADA; Tue, 23 Jul 2019 22:23:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710084.outbound.protection.outlook.com [40.107.71.84]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9B43D68978D for ; Tue, 23 Jul 2019 22:23:17 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FiLMDAgn15oW7iqhxpgEJjvU+gox7piK4yOks2PlBLPMf2soJhyVkdDe/y3wPVzMSTcFw1lkRe9NCPphfUI08EvpzzZQnD37q8Nez59mAlqQNkrVWhHvVTDemyEKG+gfV3w4sKxInbRWVmnegtbt4fJhwz8PG24DmUswGp7cr+1Lg0lTpZ5oGP2wFiLpIbcwbHyTBQ6VGTXAe0q6zgG5ZTIHGZWdinlL1xZ8yAXehds5yO+IfDsoWFhm9coGGOyoMtpsrw3mZ67a5Yw/XUKUQipkIVL/YEvVGqJ+J+lva717GvZHh0GIJr7nRbuHDFYsQqM6Xu+VgOGc41Q53lt4Kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lamg8EhTgRxH168Ox8bhym7SzpSBY2T7IhnDJ3IQvQI=; b=O2HR6mvRsPQVCEHVKlQdwjYADyhDP3HF73dK2MMoX/ucY3WUEbsQZxsrA5klkbB4pSY68X08yQYd1V+FmIpeShURqSHOcSJWoEbO6S5JeHV0uP586rO3HjZr21wrUEmS1hzE3E6lxBZyvhiaSoEfqt32uBsgODhlcG/eNP0UnUVYcgGWO1CCvbGDRRLo3uCPeVqwLgKJBaspwCBOd/ha2rvsXEtqeYnugKkmfaFuGfHSRN/6rMWp+TSmdnNWsFgmC5XI02im7st7SFpP2ORBLbDmUrA4qpmZJiQW4Qp1R8UWb949ud9YSNB3/rSnoTB7PkG+eQYKNe3C6iNkz93xYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=wwu.edu; dmarc=pass action=none header.from=wwu.edu; dkim=pass header.d=wwu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wwu.edu; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lamg8EhTgRxH168Ox8bhym7SzpSBY2T7IhnDJ3IQvQI=; b=sBM2/9mBR/HCTxV4hPgDwjm9AF9p6wws3FGb0z9envNGjMfueVP4ktv252om4+VPLRl/+pQOVYcJNCPWYsSKUCvLXCjkNAXP4USv/+zp1I0Q+RnmezHFIfeW2jSUb8t3gJSfvpCbgyHXnNxkViGHbjc9Yn4t+B6M9CFZcIAFIRo= Received: from DM6PR02MB3977.namprd02.prod.outlook.com (20.176.79.154) by DM6PR02MB4458.namprd02.prod.outlook.com (20.176.105.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2094.12; Tue, 23 Jul 2019 19:23:13 +0000 Received: from DM6PR02MB3977.namprd02.prod.outlook.com ([fe80::605b:2400:b8aa:6220]) by DM6PR02MB3977.namprd02.prod.outlook.com ([fe80::605b:2400:b8aa:6220%5]) with mapi id 15.20.2094.013; Tue, 23 Jul 2019 19:23:12 +0000 From: To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] Patch for IPC SHM Thread-Index: AQHVQKfrqqSN3I2vXkOzX81kaU30/A== Date: Tue, 23 Jul 2019 19:23:12 +0000 Message-ID: <20190723.122305.989255413260855558.aran@wwu.edu> References: <3E760E7F-ACBA-4793-90ED-80C2982B5B30@gmail.com> <20190722.111431.710456575216735155.aran@wwu.edu> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-clientproxiedby: MWHPR02CA0004.namprd02.prod.outlook.com (2603:10b6:300:4b::14) To DM6PR02MB3977.namprd02.prod.outlook.com (2603:10b6:5:9f::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=clausoa@wwu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: Mew version 6.8 on Emacs 26.2 x-originating-ip: [104.36.243.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 54e72a8e-83f8-439d-c56b-08d70fa33365 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(49563074)(7193020); SRVR:DM6PR02MB4458; x-ms-traffictypediagnostic: DM6PR02MB4458: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:193; x-forefront-prvs: 0107098B6C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(66946007)(6436002)(53936002)(2501003)(7736002)(52116002)(102836004)(8936002)(229853002)(25786009)(5640700003)(256004)(99936001)(68736007)(478600001)(5024004)(305945005)(50226002)(2351001)(53546011)(6486002)(88552002)(786003)(6506007)(386003)(186003)(486006)(71200400001)(71190400001)(6916009)(103116003)(2906002)(66066001)(14454004)(76176011)(6116002)(81156014)(316002)(26005)(6246003)(36756003)(2616005)(99286004)(476003)(75432002)(66446008)(81166006)(66616009)(11346002)(446003)(3846002)(6512007)(66556008)(8676002)(64756008)(66476007)(5660300002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR02MB4458; H:DM6PR02MB3977.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: wwu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: RzDXT7vUUW/oFNwoIikcILYmISgAcsIprZHl3ylZKkRQp7wCp2ee7PqtevUFmzaMnJCoAl9/xiDAvNeb32nJLNQYUcM4LITIzny7BxEjTNAcDntsnhf+U65ijgS4cQK8ei1LmESnc6jYhRrEq4zVCIzog5qSLy7WTQJ76xW+rM7TvyvzU0OFtMn7mSiZiTUAZ0sV9zwDUVjTflWJDmuEtvC34CnB/vc2KUAVASPtpvinFYNWchBiByaK3+a6i+pF1tI/6NQJEzUzp6LZCuYs0Ol7KDd3yXKGPHefW+TVyO4n5hKFRQHcDCdOiuojijqSQeZC2YOZHAVAL204MipBDYqKsvVeirk4bLdbrUMFcwttjeqdAqXcTAlXVp1n2TsizX3SBk38VY2NFmSnXaw6DkeTwltmksohpC5U95as8+8= MIME-Version: 1.0 X-OriginatorOrg: wwu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 54e72a8e-83f8-439d-c56b-08d70fa33365 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jul 2019 19:23:12.8529 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: dc46140c-e26f-43ef-b0ae-00f257f478ff X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: clausoa@wwu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB4458 Subject: Re: [FFmpeg-devel] Patch for IPC SHM X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Chad Fraleigh > > On 7/22/2019 11:14 AM, Aran.Clauson@wwu.edu wrote: > >> +static void rm_shmid(AVFormatContext *s) { >> + XCBGrabContext *c = s->priv_data; >> + if(c->shmid != -1) { >> + shmctl(c->shmid, IPC_RMID, 0); >> + c->shmid == -1; > ^^^^^^^^^^^^^^ > Assignment/compare operator mismatch. > > >> + } >> +} >> + Well, that's embarrassing. diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c index b7e689343e..1acf3cdf28 100644 --- a/libavdevice/xcbgrab.c +++ b/libavdevice/xcbgrab.c @@ -75,6 +75,7 @@ typedef struct XCBGrabContext { const char *framerate; int has_shm; + int shmid; } XCBGrabContext; #define FOLLOW_CENTER -1 @@ -221,6 +222,14 @@ static int check_shm(xcb_connection_t *conn) return 0; } +static void rm_shmid(AVFormatContext *s) { + XCBGrabContext *c = s->priv_data; + if(c->shmid != -1) { + shmctl(c->shmid, IPC_RMID, 0); + c->shmid = -1; + } +} + static int allocate_shm(AVFormatContext *s) { XCBGrabContext *c = s->priv_data; @@ -230,7 +239,8 @@ static int allocate_shm(AVFormatContext *s) if (c->buffer) return 0; - id = shmget(IPC_PRIVATE, size, IPC_CREAT | 0777); + + id = shmget(IPC_PRIVATE, size, IPC_CREAT | 0666); if (id == -1) { char errbuf[1024]; int err = AVERROR(errno); @@ -239,15 +249,20 @@ static int allocate_shm(AVFormatContext *s) size, errbuf); return err; } + xcb_shm_attach(c->conn, c->segment, id, 0); data = shmat(id, NULL, 0); - shmctl(id, IPC_RMID, 0); - if ((intptr_t)data == -1 || !data) - return AVERROR(errno); + + if ((intptr_t)data == -1 || !data) { + shmctl(id, IPC_RMID, 0); + return AVERROR(errno); + } c->buffer = data; + c->shmid = id; return 0; } + static int xcbgrab_frame_shm(AVFormatContext *s, AVPacket *pkt) { XCBGrabContext *c = s->priv_data; @@ -268,6 +283,8 @@ static int xcbgrab_frame_shm(AVFormatContext *s, AVPacket *pkt) xcb_flush(c->conn); + rm_shmid(s); + if (e) { av_log(s, AV_LOG_ERROR, "Cannot get the image data "