From patchwork Fri Jan 5 08:13:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Steven X-Patchwork-Id: 7135 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.78.2 with SMTP id r2csp483531jaa; Fri, 5 Jan 2018 00:14:27 -0800 (PST) X-Google-Smtp-Source: ACJfBouPhL8frgTypLDM5UlYIOE/ZNFcgoT5YaDbZOSDqtKaiLCvb03uxeYuaMTS2NVR4b3OgPMb X-Received: by 10.28.203.76 with SMTP id b73mr1478193wmg.155.1515140067865; Fri, 05 Jan 2018 00:14:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515140067; cv=none; d=google.com; s=arc-20160816; b=sgW8YAlgjEEAgYPReGZIlKbDNr+5HHPsCp3raApo8cVEI/PoxBMNo7hRIQHH1L+zTI nC+A70Jx+/M0AGv2vs6CPl3/79wnq8cRSP1RuAQ7E6x32d2zyUkKwTvvaugHU7M3zTT6 T5mPG1TPmMm9z2NbXVsMINROfYs3OIKGP+OKYRwLkRVf1lqlbMYZRHwj6r4TXu5wWCIO NpFDgVfyL9/a9nOknpME035ngSL1QUY4EEqouDfCaA020dLg5NyJoNRMHfuLO75te/P8 XGMxOJrrsT2TqXJje+9q6zgpExhU93nGixN+e11O3n4GReBiqM7OvvIWuUde+gpqbrjz U6Vw== 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:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:message-id:date:to:from :delivered-to:arc-authentication-results; bh=hiYO0RD4OI4aQkKuubjHELwTVbvwiz4ydmeaD8I54YU=; b=T+HrdQH7vcKhdkav05dacd1/sgwVW+l7lFHQFnh3JfLc1SrNmVjMWcsVEncyNC/R7C dT9+bvc8+ab1mR1LX4EL+7ZfeI6dpGTddlw+uTaJz/XN5RfdYulAxT2LvWV+EBqCDmjX xBjy07eW66F/8zkcxU8MmaPm+kGqBJRA8201xuf3YcIb+llw70UtuTaQ4hGZHceTvlhv nYzm9GwCccfv9JuNfD5izKsFFo9m2FUUc8zT2huvu6HjVBGhWyBjPsCXvO7uVBKwYzBm L8ExLNFCHgLPTyQ2VwwxXAqOTyWrxY9u3uazAGy5c82p402CbacGhQ3indo/jzEyMlxC PeQg== 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 s14si3340760wmd.191.2018.01.05.00.14.26; Fri, 05 Jan 2018 00:14:27 -0800 (PST) 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 CE1296898B5; Fri, 5 Jan 2018 10:14:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpproxy19.qq.com (smtpproxy19.qq.com [184.105.206.84]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8A2B66897C2 for ; Fri, 5 Jan 2018 10:14:00 +0200 (EET) X-QQ-mid: bizesmtp8t1515140031tkj6gf0df Received: from localhost (unknown [47.90.47.25]) by esmtp4.qq.com (ESMTP) with id ; Fri, 05 Jan 2018 16:13:51 +0800 (CST) X-QQ-SSF: 01100000004000F0FKF0000A0000000 X-QQ-FEAT: /A5Igf99+LToBrXm5KeDhdUBAwFQKU1fVns5bVfJ1HdKAs1+oB7K+WYICUAtf qO0A7hzVFSB8BhYIzQyYnhLaR6MFBPJdOsNcuCuG2ECJaE3B/F7QTjWgfXrW+FMvTsCUROY kieGJZYJFr99uq2dZ12ywoe5UO9U3nxhmOMaJK9qUwA4IdbOKxyq+XSTF+2DueLq0Wm2znM kfulNKIRpfr+Y4tPV6C724ydOXIPgpWOgNPUaqP8iL9mJH9tcI986sozqVhbBPNruBLs3F6 aVGWt8a5Nt+jLBXbUPMEjrMpIh4Fec8CQr2A== X-QQ-GoodBg: 0 From: Steven Liu To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 Jan 2018 16:13:49 +0800 Message-Id: <20180105081349.619-1-lq@chinaffmpeg.org> X-Mailer: git-send-email 2.10.1.382.ga23ca1b.dirty X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:chinaffmpeg.org:qybgforeign:qybgforeign4 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH] avformat/avienc: add check bitstream method 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 Cc: Steven Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" rename mpegts_check_bitstream to ff_check_bitstream fix problem: remux from mp4(AVC Codec) to avi(AVC Codec) error message: [avi @ 0x7fac97003c00] H.264 bitstream malformed, no startcode found, use the video bitstream filter 'h264_mp4toannexb' to fix it ('-bsf:v h264_mp4toannexb' option with ffmpeg) Signed-off-by: Steven Liu --- libavformat/avienc.c | 1 + libavformat/mpegts.h | 5 +++++ libavformat/mpegtsenc.c | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libavformat/avienc.c b/libavformat/avienc.c index ac0f04c354..a8782ef292 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -1002,6 +1002,7 @@ AVOutputFormat ff_avi_muxer = { .write_header = avi_write_header, .write_packet = avi_write_packet, .write_trailer = avi_write_trailer, + .check_bitstream = ff_check_bitstream, .codec_tag = (const AVCodecTag * const []) { ff_codec_bmp_tags, ff_codec_wav_tags, 0 }, diff --git a/libavformat/mpegts.h b/libavformat/mpegts.h index 272e2be4f7..96610ee0a6 100644 --- a/libavformat/mpegts.h +++ b/libavformat/mpegts.h @@ -114,4 +114,9 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type */ int ff_check_h264_startcode(AVFormatContext *s, const AVStream *st, const AVPacket *pkt); +/** + * Check bitstream of stream + * @return <0 to stop processing + */ +int ff_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt); #endif /* AVFORMAT_MPEGTS_H */ diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index fdfa544ee2..866615f620 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1846,7 +1846,7 @@ static void mpegts_deinit(AVFormatContext *s) av_freep(&ts->services); } -static int mpegts_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) +int ff_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) { int ret = 1; AVStream *st = s->streams[pkt->stream_index]; @@ -1982,7 +1982,7 @@ AVOutputFormat ff_mpegts_muxer = { .write_packet = mpegts_write_packet, .write_trailer = mpegts_write_end, .deinit = mpegts_deinit, - .check_bitstream = mpegts_check_bitstream, + .check_bitstream = ff_check_bitstream, .flags = AVFMT_ALLOW_FLUSH | AVFMT_VARIABLE_FPS, .priv_class = &mpegts_muxer_class, };