From patchwork Mon Oct 17 18:49:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Cadhalpun X-Patchwork-Id: 1037 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.133 with SMTP id o127csp414214vsd; Mon, 17 Oct 2016 11:49:34 -0700 (PDT) X-Received: by 10.28.135.207 with SMTP id j198mr8901741wmd.109.1476730174179; Mon, 17 Oct 2016 11:49:34 -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 in2si43201476wjb.3.2016.10.17.11.49.33; Mon, 17 Oct 2016 11:49: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; dkim=neutral (body hash did not verify) header.i=@googlemail.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; dmarc=fail (p=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ED0DB689892; Mon, 17 Oct 2016 21:49:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f65.google.com (mail-lf0-f65.google.com [209.85.215.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6C135689211 for ; Mon, 17 Oct 2016 21:49:23 +0300 (EEST) Received: by mail-lf0-f65.google.com with SMTP id x79so28255971lff.2 for ; Mon, 17 Oct 2016 11:49:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:subject:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=Jj4Kd8QubVAccapROjmGh7UJLQ2p6GyfRiX7/lM+srU=; b=ctduyZxichmnd1/+9SaQ60eUXbhzfsm4Xv/q4KGUG4jNk76+lkYexs7/bh7zKrT4eY kERW6BC5EesvVip3X2tJGKdJEbLYhH/LLifuNdxrejG7EFsdJ+99QURNmiEHd9x+LhH3 wz+DhOBa4wdcFv9XXPBpPqPJeTILW+hVWkJ1g/45FcFUq+xXEM5XV2BjxC0SxU9ZJyel qM0Mq/rVVX7DtBY1U59q3B8ipkRo/OVA8ZdhklNHgzzX4ddVkJiRhFkuNk/GFn8zhSD1 VeFBOx2VDP5zsRWB8CpE8q7J2Q+ffVYZmgvwriU1ZIlJZvxOVmoSgW7r8IulQkas6Juz /x2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=Jj4Kd8QubVAccapROjmGh7UJLQ2p6GyfRiX7/lM+srU=; b=A1FUJUkN0TpRN+POpVPCHp/xxH95OVebkMA7C9l0xjUt7bkRxWyAKhjEglZrzbM33a jYfWU6CSSQ6kLoL+9NSh81LvQ3WIyiC9CdlnGCFimdOj+vw0sgCnVHVOpl8Tlbn/7FaL AzYnkLVk9mxFLuklEF+jzjeWjbZ7JG0bBvn0rY+S3EWuIAwybz/KRk19WbNEoYUAVTce 5VvGIS2whaAySKo9TXKkg21KEnlTHr0iMIpoqRrvCSflOkJWjikZsM6CMpuNYGhhkR92 7ZVZORMMqLHhXpW/GSvOyXeyd8qP9wr1Lt2ssHbQW2al06G8TlnbaWN7GW7g1UXbNMvM MqAw== X-Gm-Message-State: AA6/9RmVVkoKSu9/0BqgrdgXYyi3tS+GF9FH4TzoIjlIzl5tI7lg+dXDgXLZYVW3PhsvMA== X-Received: by 10.25.28.197 with SMTP id c188mr17191111lfc.81.1476730164829; Mon, 17 Oct 2016 11:49:24 -0700 (PDT) Received: from [192.168.2.21] (p5B0950F7.dip0.t-ipconnect.de. [91.9.80.247]) by smtp.googlemail.com with ESMTPSA id y75sm7216292lfi.43.2016.10.17.11.49.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Oct 2016 11:49:24 -0700 (PDT) From: Andreas Cadhalpun X-Google-Original-From: Andreas Cadhalpun To: FFmpeg development discussions and patches Message-ID: <3f06de83-f054-4b7a-18e1-3ce1234c04d9@googlemail.com> Date: Mon, 17 Oct 2016 20:49:23 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.4.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat: close parser if codec changed 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" The parser depends on the codec and thus must not be used with a different one. If it is, the 'avctx->codec_id == s->parser->codec_ids[0] ...' assert in av_parser_parse2 gets triggered. Signed-off-by: Andreas Cadhalpun --- libavformat/utils.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libavformat/utils.c b/libavformat/utils.c index 8a51aea..a581994 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -480,6 +480,12 @@ static int update_stream_avctx(AVFormatContext *s) if (!st->internal->need_context_update) continue; + /* close parser, because it depends on the codec */ + if (st->parser) { + av_parser_close(st->parser); + st->parser = NULL; + } + /* update internal codec context, for the parser */ ret = avcodec_parameters_to_context(st->internal->avctx, st->codecpar); if (ret < 0) @@ -1515,6 +1521,12 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) st->info->found_decoder = 0; } + /* close parser, because it depends on the codec */ + if (st->parser) { + av_parser_close(st->parser); + st->parser = NULL; + } + ret = avcodec_parameters_to_context(st->internal->avctx, st->codecpar); if (ret < 0) return ret;