From patchwork Thu Jul 6 15:08:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 4227 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.1.76 with SMTP id 73csp2317903vsb; Thu, 6 Jul 2017 08:08:46 -0700 (PDT) X-Received: by 10.28.189.214 with SMTP id n205mr24300693wmf.122.1499353726332; Thu, 06 Jul 2017 08:08:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499353726; cv=none; d=google.com; s=arc-20160816; b=JszIwZ3b/jM6YnNKBTiH0jamnYUMDoEzam3vLQWOjGMAczWl9uMuvQ/1R2kdIK0Jdg 8XuhARYKZLDd2NbNrr+A7nPZe8KUSjgtos1OBZjQHXRI8o+qhxPEfKVdOwk4lKdf9v0h b0Rdd5nP7szxlp3nxf14T5yfdUr4TLYPHMrhTiQss2ex4Wd/5lSh1PvnQPkLwg2XQmn6 daudNM2gRxjINbBmHtuflFWOW8YFPD9yW18PHFwKixwbSfapqjxWVtxO8aH0ufr2o00h 3tODQ19J2Bivoa4ca6sgPRdntork9A1JNUkG/OvJUm7Kpgua0yKS/enz1e9WhqMpN8F8 PlgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=wqJqYZ2/8LQzPGVHqWycFIkoR4BAeE8bJnMvmdD1Ons=; b=QgmUsSgS67Xsd3lYRGWMSwy/zxuZwqqIBNjzPdqOEIaRvrAefM8qL9jzOjw5nsHbnP VEop+FRyzQQUF23uPAUtBzxczMrVbwe56rnPZ86tQYzRJOOtemhuD+yJPGHZ6lNW6TNb J6woWV3dBqNU/sQbzMGf2vhg2Nx4Uq8sZTF39ptU2b27MgEnPh8DDHIuJawSbE+0B6pc 9L5+6RQ34fDNAWHuAODpVdmNRu1AZZj5lgRD/k/ZVabClTOaKMrdMu9WADODYpynMHxt NqCRIBGej3YjqNd1fBrZQZ2WyWFvOAw2t8JC4aBeGW5v1BBl5QaJCdgoVDsryeSNFleg mYvg== 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 t126si241632wma.193.2017.07.06.08.08.45; Thu, 06 Jul 2017 08:08:46 -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 D8D066891D4; Thu, 6 Jul 2017 18:08:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-qmta-pe01-2.mx.upcmail.net (vie01a-qmta-pe01-2.mx.upcmail.net [62.179.121.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1614E6804C1 for ; Thu, 6 Jul 2017 18:08:33 +0300 (EEST) Received: from [172.31.218.52] (helo=vie01a-dmta-pe05-1.mx.upcmail.net) by vie01a-pqmta-pe01.mx.upcmail.net with esmtp (Exim 4.88) (envelope-from ) id 1dT8OQ-0006d9-KC for ffmpeg-devel@ffmpeg.org; Thu, 06 Jul 2017 17:08:34 +0200 Received: from [172.31.216.43] (helo=vie01a-pemc-psmtp-pe01) by vie01a-dmta-pe08.mx.upcmail.net with esmtp (Exim 4.88) (envelope-from ) id 1dT8OK-0003Cz-Uh for ffmpeg-devel@ffmpeg.org; Thu, 06 Jul 2017 17:08:28 +0200 Received: from localhost ([213.47.41.20]) by vie01a-pemc-psmtp-pe01 with SMTP @ mailcloud.upcmail.net id hT8T1v01Q0S5wYM01T8Uai; Thu, 06 Jul 2017 17:08:28 +0200 X-SourceIP: 213.47.41.20 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 6 Jul 2017 17:08:27 +0200 Message-Id: <20170706150827.10051-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.13.0 Subject: [FFmpeg-devel] [PATCH] avcodec/hevcdec: Remove hevc_decode_extradata() 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This function wrapped around ff_hevc_decode_extradata() and export_stream_params(), but from the 2 callers one needs to skip export_stream_params() so its simpler to directly call the needed code. Moving the 2nd part of the code out was suggested by wm4 Signed-off-by: Michael Niedermayer --- libavcodec/hevcdec.c | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 55f51211c3..7c112b29d6 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -3057,28 +3057,6 @@ static int verify_md5(HEVCContext *s, AVFrame *frame) return 0; } -static int hevc_decode_extradata(HEVCContext *s, uint8_t *buf, int length, int first) -{ - int ret, i; - - ret = ff_hevc_decode_extradata(buf, length, &s->ps, &s->sei, &s->is_nalff, - &s->nal_length_size, s->avctx->err_recognition, - s->apply_defdispwin, s->avctx); - if (ret < 0) - return ret; - - /* export stream parameters from the first SPS */ - for (i = 0; i < FF_ARRAY_ELEMS(s->ps.sps_list); i++) { - if (first && s->ps.sps_list[i]) { - const HEVCSPS *sps = (const HEVCSPS*)s->ps.sps_list[i]->data; - export_stream_params(s->avctx, &s->ps, sps); - break; - } - } - - return 0; -} - static int hevc_decode_frame(AVCodecContext *avctx, void *data, int *got_output, AVPacket *avpkt) { @@ -3099,7 +3077,9 @@ static int hevc_decode_frame(AVCodecContext *avctx, void *data, int *got_output, new_extradata = av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA, &new_extradata_size); if (new_extradata && new_extradata_size > 0) { - ret = hevc_decode_extradata(s, new_extradata, new_extradata_size, 0); + ret = ff_hevc_decode_extradata(new_extradata, new_extradata_size, &s->ps, &s->sei, &s->is_nalff, + &s->nal_length_size, s->avctx->err_recognition, + s->apply_defdispwin, s->avctx); if (ret < 0) return ret; } @@ -3387,11 +3367,23 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx) s->threads_number = 1; if (avctx->extradata_size > 0 && avctx->extradata) { - ret = hevc_decode_extradata(s, avctx->extradata, avctx->extradata_size, 1); + int i; + ret = ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size, &s->ps, &s->sei, &s->is_nalff, + &s->nal_length_size, s->avctx->err_recognition, + s->apply_defdispwin, s->avctx); if (ret < 0) { hevc_decode_free(avctx); return ret; } + + /* export stream parameters from the first SPS */ + for (i = 0; i < FF_ARRAY_ELEMS(s->ps.sps_list); i++) { + if (s->ps.sps_list[i]) { + const HEVCSPS *sps = (const HEVCSPS*)s->ps.sps_list[i]->data; + export_stream_params(s->avctx, &s->ps, sps); + break; + } + } } if((avctx->active_thread_type & FF_THREAD_FRAME) && avctx->thread_count > 1)