From patchwork Fri Nov 4 21:28:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Cadhalpun X-Patchwork-Id: 1302 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp39585vsb; Fri, 4 Nov 2016 14:28:31 -0700 (PDT) X-Received: by 10.28.139.16 with SMTP id n16mr270131wmd.45.1478294911385; Fri, 04 Nov 2016 14:28:31 -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 j132si7396885wmf.13.2016.11.04.14.28.30; Fri, 04 Nov 2016 14:28:31 -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 B4351689E23; Fri, 4 Nov 2016 23:28:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1C6E3689C49 for ; Fri, 4 Nov 2016 23:28:19 +0200 (EET) Received: by mail-wm0-f65.google.com with SMTP id 68so5744633wmz.2 for ; Fri, 04 Nov 2016 14:28:22 -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=zeqvZzmWlM+LpIdr6Fz4IHRxkOP/YltvnUoC0GhsabY=; b=0OGCjbQkyVhDpC8uMadRxhGxx6OuaweS4ZRUB+eWPzlm73PjI7zfo6fA7ok4MgTWak JSKSp/dSed3UkpGH2OpvC7R4hqf0PsLigJ+1IUgRaFKnScqt91UaOZGNH/TY3+eCYKH7 CJWDekI8GR+a30Moe232FlXHINgfJh359Y/rTRSJ1FXPpoBspuLvaEYL1iAGyO3WTmKI w/0P5ogCsoNC2yFJP9U+kJ8Q2u81uABwqakIX59xXkKFlgkaedcZSfhEROCuif/wkyxj 8FyW/5k9BDsyxf4rTGLfaVAS3mQoqya+vYp6TewwLTYyDwyxW95vtr3TjVECsdWi9ND6 2EoA== 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=zeqvZzmWlM+LpIdr6Fz4IHRxkOP/YltvnUoC0GhsabY=; b=aogJaQxc3G+QPOWjcAPn0idsbgPGZKrzBCrMnrS74nJFsF1zbHWCgihBi71O8hhdCw whd+HdOjmzo9WP6Ub7OIsnD4qDFJQPfTPGRh/FezegREmBOqWJ8+wFQBJOy7PfXNwG8T ggc30ZoFDeP7p92ZxlypRE6dCmcMFFCp986Ql5Vhqs32eoFoXOfcJjn9DHzIo+AFM265 S/fWAeTOAK5Qn6C5y9j8dBA2GDOnrrSOxt0qmdOwKUUAtrRf54ICct4HsCr7mnR8ahJq H7PzcLl1cspDxQDdBb7v0HvOm1fCWDhHbu4g4KkUAYN29VngLreIb4W+jD6g+OUCRj5g s4ZA== X-Gm-Message-State: ABUngvfTkIchXZXitWEav+FRtws2VXguYOvwSeW5U3sFKQBdk2BupCX1sX7Wv5BEfpItCA== X-Received: by 10.194.203.5 with SMTP id km5mr15894439wjc.230.1478294902040; Fri, 04 Nov 2016 14:28:22 -0700 (PDT) Received: from [192.168.2.21] (p5B09506C.dip0.t-ipconnect.de. [91.9.80.108]) by smtp.googlemail.com with ESMTPSA id jg6sm16272444wjb.22.2016.11.04.14.28.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Nov 2016 14:28:21 -0700 (PDT) From: Andreas Cadhalpun X-Google-Original-From: Andreas Cadhalpun To: FFmpeg development discussions and patches Message-ID: <407bf1b7-2b73-4998-d8a7-660f01f8a30e@googlemail.com> Date: Fri, 4 Nov 2016 22:28:20 +0100 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] flvdec: set need_context_update when changing codec id 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" Otherwise the codec context and codecpar might disagree on the codec id, triggering asserts in av_parser_parse2. Signed-off-by: Andreas Cadhalpun --- libavformat/flvdec.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index e53c345..4ba7fc8 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -289,7 +289,9 @@ static int flv_same_video_codec(AVCodecParameters *vpar, int flags) static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream, int flv_codecid, int read) { + int ret = 0; AVCodecParameters *par = vstream->codecpar; + enum AVCodecID old_codec_id = vstream->codecpar->codec_id; switch (flv_codecid) { case FLV_CODECID_H263: par->codec_id = AV_CODEC_ID_FLV1; @@ -317,20 +319,26 @@ static int flv_set_video_codec(AVFormatContext *s, AVStream *vstream, else avio_skip(s->pb, 1); } - return 1; // 1 byte body size adjustment for flv_read_packet() + ret = 1; // 1 byte body size adjustment for flv_read_packet() + break; case FLV_CODECID_H264: par->codec_id = AV_CODEC_ID_H264; vstream->need_parsing = AVSTREAM_PARSE_HEADERS; - return 3; // not 4, reading packet type will consume one byte + ret = 3; // not 4, reading packet type will consume one byte + break; case FLV_CODECID_MPEG4: par->codec_id = AV_CODEC_ID_MPEG4; - return 3; + ret = 3; + break; default: avpriv_request_sample(s, "Video codec (%x)", flv_codecid); par->codec_tag = flv_codecid; } - return 0; + if (par->codec_id != old_codec_id) + vstream->internal->need_context_update = 1; + + return ret; } static int amf_get_string(AVIOContext *ioc, char *buffer, int buffsize)