From patchwork Fri Apr 17 03:10:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19021 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 B963544B3EA for ; Fri, 17 Apr 2020 06:10:30 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 88C7668BD23; Fri, 17 Apr 2020 06:10:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f194.google.com (mail-qk1-f194.google.com [209.85.222.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 78AAE68B7C3 for ; Fri, 17 Apr 2020 06:10:23 +0300 (EEST) Received: by mail-qk1-f194.google.com with SMTP id c63so1108946qke.2 for ; Thu, 16 Apr 2020 20:10:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=eR4SOavv3j0q65Aol9Kui0JiYdKzOjum5Z3wDwxwRHs=; b=M0NjFek/dm/TwvN3As2tHivWpaLhXBrBPbqrPFZf9yPfsA32iqaBWOxaDO7n8UtbFQ LBwgOJaMdopZCKGMJs2Wx/n+ZtYSMWOMUiH86lQHaOLy/WFro8ZRuDk3NV1I2xAPP4hN veytLROQVJ6Vcp8caH2IsZZ59ANQMhwrPkdL1ANqiuqj3PqD9mN7N0bcpaVBxd46KMVM jRdfd0xNx6Y9ilIBK7L3VWGXZE34OCjcICpXUubxdT7k94zOMP7siKyIJ9Ae2fQfABaF bult/1L1nzXfl0mKODTrZw8JDOtEiZJF/s67hBi3RjWPojoYN8VxX9WJxYV9x6qKFsix 1x0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=eR4SOavv3j0q65Aol9Kui0JiYdKzOjum5Z3wDwxwRHs=; b=m5KnJiRl15jMaxscO/S9f2gv1DWpUGbAx1tPuYM9T18oL3yiW36L6GjQYdelAwR8cA tJej+Xb4vpcARU4JV736jhDnchxZVFRQrSoDQU+Eo12EV4ABkEBBy9+9dfviB/TLNOP+ YNUu6deNETbw7uBAD34QTkTTJUQcHp17S/nhGNuOamkPQ1vfkS3BmxvyoPnEacDDh4qe pYPtiSOnuir5JKRZ1CJauGwS3rb7xJbZOBdF4duhWvGwSj/Zxm0EaWXWV8tQTU6uCE/u 2AIMXz3yl/Medjw0iWLLyWLvJzCYwnM8rl2/iFZaxDdPJokGX6U6xf7pByb0GAlOB/Rq Mu+Q== X-Gm-Message-State: AGi0PubbS6sp2fEhTmK4PDb0NYri/UGbaUcUGhoWhuji/GOk05VQG+d1 0/OtiEfrw1Bc350sCndfXaon6MJr X-Google-Smtp-Source: APiQypLyJ7YEsmp2Rf4XuKri7POUHPAKUypcfF/bJFOZKjRZrRp/wNkbTTC5VjZqbqZPcXnjUHthGw== X-Received: by 2002:a37:6587:: with SMTP id z129mr1193504qkb.437.1587093021952; Thu, 16 Apr 2020 20:10:21 -0700 (PDT) Received: from localhost.localdomain ([191.83.216.57]) by smtp.gmail.com with ESMTPSA id i56sm10290377qte.6.2020.04.16.20.10.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2020 20:10:21 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Apr 2020 00:10:06 -0300 Message-Id: <20200417031008.2131-1-jamrial@gmail.com> X-Mailer: git-send-email 2.26.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/qpeg: remove an unnecessary intermediary AVFrame 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" Decoding can be handled directly in the output frame. Signed-off-by: James Almer --- libavcodec/qpeg.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index d4195c5f0b..3fde6381f2 100644 --- a/libavcodec/qpeg.c +++ b/libavcodec/qpeg.c @@ -30,7 +30,7 @@ typedef struct QpegContext{ AVCodecContext *avctx; - AVFrame *pic, *ref; + AVFrame *ref; uint32_t pal[256]; GetByteContext buffer; } QpegContext; @@ -267,7 +267,7 @@ static int decode_frame(AVCodecContext *avctx, { uint8_t ctable[128]; QpegContext * const a = avctx->priv_data; - AVFrame * const p = a->pic; + AVFrame * const p = data; AVFrame * const ref = a->ref; uint8_t* outdata; int delta, ret; @@ -281,9 +281,6 @@ static int decode_frame(AVCodecContext *avctx, bytestream2_init(&a->buffer, avpkt->data, avpkt->size); - av_frame_unref(ref); - av_frame_move_ref(ref, p); - if ((ret = ff_get_buffer(avctx, p, AV_GET_BUFFER_FLAG_REF)) < 0) return ret; outdata = p->data[0]; @@ -307,7 +304,8 @@ static int decode_frame(AVCodecContext *avctx, } memcpy(p->data[1], a->pal, AVPALETTE_SIZE); - if ((ret = av_frame_ref(data, p)) < 0) + av_frame_unref(ref); + if ((ret = av_frame_ref(ref, p)) < 0) return ret; *got_frame = 1; @@ -320,6 +318,8 @@ static void decode_flush(AVCodecContext *avctx){ int i, pal_size; const uint8_t *pal_src; + av_frame_unref(a->ref); + pal_size = FFMIN(1024U, avctx->extradata_size); pal_src = avctx->extradata + avctx->extradata_size - pal_size; @@ -331,7 +331,6 @@ static av_cold int decode_end(AVCodecContext *avctx) { QpegContext * const a = avctx->priv_data; - av_frame_free(&a->pic); av_frame_free(&a->ref); return 0; @@ -343,14 +342,11 @@ static av_cold int decode_init(AVCodecContext *avctx){ a->avctx = avctx; avctx->pix_fmt= AV_PIX_FMT_PAL8; - decode_flush(avctx); - - a->pic = av_frame_alloc(); a->ref = av_frame_alloc(); - if (!a->pic || !a->ref) { - decode_end(avctx); + if (!a->ref) return AVERROR(ENOMEM); - } + + decode_flush(avctx); return 0; } From patchwork Fri Apr 17 03:10:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19022 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 9B85744B3EA for ; Fri, 17 Apr 2020 06:10:32 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7FC6F68BD27; Fri, 17 Apr 2020 06:10:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5AA3D68B7C3 for ; Fri, 17 Apr 2020 06:10:24 +0300 (EEST) Received: by mail-qk1-f196.google.com with SMTP id s63so1092205qke.4 for ; Thu, 16 Apr 2020 20:10:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ujycd1OnGqpgSSJJnkZSruTYq+IBF8cNCmNMoU8t/8E=; b=GY7VEyWsnKFanYd095bbRewSOc5yYPd0kufESsO8XmxLCq/hmccbnRQqhXKv2Fxrmy 9mgoy4rZBOm61WXbOcj4vq135GYhkBSk0kL4IVMQBoECTvRT83aHEQ2t8IYVppf2ReTC CaLDs9wgCpOC2tRlrkT2l5EqoOQ7d9fqGRPfUrhHtBWAuJ3uSHFaPmiizGmkaKODTM7o wq+wpbitEZfl6PO0ytswV0RYTI1yuyhXAQzZiwOphnAaWZOWZ5Ck2l+Z1mDau6y84YWP PXIDa5D373+S32Zc2o2J7I+BGzvojUTpgEZA97Z/z+LQQDeraAl7pqxCEd8aeEIdipri Rsog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ujycd1OnGqpgSSJJnkZSruTYq+IBF8cNCmNMoU8t/8E=; b=EW0oQwPIhUt6bhJ/X/V957bso2vIMXla7uqDBoMNJnTxzrGvo4zr4UBwVgPNJ2L3+P +8LAzPWMtY2y3FXQ+UCRH7otBWoQ8JMMr8Lm84NvTerAmCbk1LkFCYLLSxprXXErs4Wf u8mV8dobueJSC/qLeghK8NE79p7EgjqCFpiOKo4nK0+4y5mOBcSDwDC2Qk1TonuU2WGU exPgHBM4r7rv/NEtOtZyfmN1Oq1RPhHZBwMAEutzFkNQF2jZRbHfZuSXeh0DPHA7VVvh GbNHrOpsxD4+50rd+ju8GvJnk4GeN82HGbZPyTfdW4lJZ3qme2pxvyUbww4NHkTAk9ys vc8w== X-Gm-Message-State: AGi0PubdhciTPXfu4jUPo+h46p8DoJXieXYRrgW7jyGUnjWlDeS5E5Ev 7ttu8Rvxzhlb3BslurVzYd0E+0ol X-Google-Smtp-Source: APiQypIBi05O8V1o86zCSeKeDNMW1S4I6y75PNskLP2xAkiMjwBeuNqBAv2IUAjIILMvXuTV1qjbwg== X-Received: by 2002:a37:b95:: with SMTP id 143mr1135883qkl.301.1587093022991; Thu, 16 Apr 2020 20:10:22 -0700 (PDT) Received: from localhost.localdomain ([191.83.216.57]) by smtp.gmail.com with ESMTPSA id i56sm10290377qte.6.2020.04.16.20.10.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2020 20:10:22 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Apr 2020 00:10:07 -0300 Message-Id: <20200417031008.2131-2-jamrial@gmail.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200417031008.2131-1-jamrial@gmail.com> References: <20200417031008.2131-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/qpeg: export missing frame properties 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" Signed-off-by: James Almer --- libavcodec/qpeg.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index 3fde6381f2..22afd9fa81 100644 --- a/libavcodec/qpeg.c +++ b/libavcodec/qpeg.c @@ -270,7 +270,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame * const p = data; AVFrame * const ref = a->ref; uint8_t* outdata; - int delta, ret; + int delta, intra, ret; int pal_size; const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &pal_size); @@ -289,7 +289,8 @@ static int decode_frame(AVCodecContext *avctx, bytestream2_skip(&a->buffer, 1); delta = bytestream2_get_byte(&a->buffer); - if(delta == 0x10) { + intra = delta == 0x10; + if (intra) { qpeg_decode_intra(a, outdata, p->linesize[0], avctx->width, avctx->height); } else { qpeg_decode_inter(a, outdata, p->linesize[0], avctx->width, avctx->height, delta, ctable, ref->data[0]); @@ -308,6 +309,9 @@ static int decode_frame(AVCodecContext *avctx, if ((ret = av_frame_ref(ref, p)) < 0) return ret; + p->key_frame = intra; + p->pict_type = intra ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; + *got_frame = 1; return avpkt->size; From patchwork Fri Apr 17 03:10:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19023 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 A8B9144B3EA for ; Fri, 17 Apr 2020 06:10:33 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 863B468BD2F; Fri, 17 Apr 2020 06:10:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63C1268B7C3 for ; Fri, 17 Apr 2020 06:10:25 +0300 (EEST) Received: by mail-qk1-f196.google.com with SMTP id l78so1068662qke.7 for ; Thu, 16 Apr 2020 20:10:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=2OhlU/0gy2Y0T2UprDkm2uWFopwsEtnhwv2O0b63XrA=; b=Fv1gdymKnlbnRd3DqRSPwzHavIFzQetdomM3N+BpzROnuEsvmSeaU3KN1WsJAavhGu MpChgJ6NeDlBwCSTEIfPX3LRmoIErzKV9nJT7qcIbCvKcTV4pc4qhNQ1mmqtePRlocV8 WJzWK3P2DztZcpjI4fUvZx7w+wT/ntoyRZl1nhKl415XtdMKB0WLv6h+xTDjUNVd9+V+ ShcMDoy0eyRZ6/6sSqJypQshgAGiS0B7yvDeOC9VH22D+AZxtnZ2uaoSVXlAypuQiBkB e109ffIDp+iXix3CK0ukDoFisbaopeDQDhOMDUGgBXMWfI0O1cTWj8ivZKqrEbxZypQ0 lefg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2OhlU/0gy2Y0T2UprDkm2uWFopwsEtnhwv2O0b63XrA=; b=ZjYFjc616Ispfg6pK0CPJzPTMVxb8q2zOkRRslp3a6iQdIsF8Eyj09inNpKwH6pGYT JX2oqaM4M/YEm1xdIzqZhOsUQiWTDD83KstnqRyJ8mSw3Znz97i6avhfSsKxGj4unKow oSsU1mCOogWeGZSsr/lcG/yfa1TLmVET7TMJ6ZPrx5eOKt4gUfezTC3UZcbIqvgzK2HR lcDKMRau5aet2QnsmB7D5BwCm0d0fKZi0xRKu9JQVMkywjy4lTfOfwk8gAPvzDI6uWoa tjen/K0p3dMWEWeREa6ooEp40hHqyUklqED+Qnx5p3Vs65SOtivf573GXU/y/syw3XN5 kIJg== X-Gm-Message-State: AGi0PuaV7Yks5pxLHr/fqH5CQrCon/asEVq5B0f8mUzl+AaVqUuLqN27 4I3f1hBRILZ45xsznP6QVoAQUokC X-Google-Smtp-Source: APiQypJyGVGtIwsTtErCsEb9x2puFoUoJJt8wT/7nVV2oe72vONRWD+DS386YbSDAKJKZmvIOSjZ9w== X-Received: by 2002:a37:7302:: with SMTP id o2mr1159258qkc.466.1587093024045; Thu, 16 Apr 2020 20:10:24 -0700 (PDT) Received: from localhost.localdomain ([191.83.216.57]) by smtp.gmail.com with ESMTPSA id i56sm10290377qte.6.2020.04.16.20.10.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2020 20:10:23 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Apr 2020 00:10:08 -0300 Message-Id: <20200417031008.2131-3-jamrial@gmail.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200417031008.2131-1-jamrial@gmail.com> References: <20200417031008.2131-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/qpeg: mark the init function as thread-safe 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" Signed-off-by: James Almer --- libavcodec/qpeg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index 22afd9fa81..cc3bfda4aa 100644 --- a/libavcodec/qpeg.c +++ b/libavcodec/qpeg.c @@ -366,4 +366,5 @@ AVCodec ff_qpeg_decoder = { .decode = decode_frame, .flush = decode_flush, .capabilities = AV_CODEC_CAP_DR1, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };