From patchwork Sat Sep 10 04:37:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rodger Combs X-Patchwork-Id: 516 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp631944vsd; Fri, 9 Sep 2016 21:39:12 -0700 (PDT) X-Received: by 10.28.63.84 with SMTP id m81mr1340242wma.88.1473482352379; Fri, 09 Sep 2016 21:39:12 -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 k11si5908135wmf.125.2016.09.09.21.39.09; Fri, 09 Sep 2016 21:39:12 -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=@gmail.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=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BA4B9689ED8; Sat, 10 Sep 2016 07:38:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi0-f68.google.com (mail-oi0-f68.google.com [209.85.218.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBD59689E5F for ; Sat, 10 Sep 2016 07:37:56 +0300 (EEST) Received: by mail-oi0-f68.google.com with SMTP id y2so9128195oie.0 for ; Fri, 09 Sep 2016 21:38:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=xFlincJWPpOrtguw4LTAeFoD8vkOUqIHFRg9WP3U/ks=; b=JL9v6galR/8X9pBoKCyQPic6Owp3b9fHsEakXFYd+zJ+rGfn08nHP2UvwL+EAyJtES JgCX0YMAvyKTdaIOnebcuonsi9RndNAljv2wQ56PUutqp9Odnv5mVxfkiQq4DfKS++hV BMKPgI9T8sqNaimVHuJQsaUXX4VZGB/KV84s3veMOTCQSdJixF/zS1rH8gr0io7jJv41 pSeuDP4kqydhIZ4/D0FnQIUwxrWio003qWeMAAlop7qZWxCBZvnhRTXeHTKpJYaU48A8 QW52PoSvuKYR0FY00m7YMAoNirv8fPU1oDp4pzBf8EP0TVBSS1rTiONm1a6hCdKEgOhX n1LQ== 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:date:message-id:in-reply-to :references; bh=xFlincJWPpOrtguw4LTAeFoD8vkOUqIHFRg9WP3U/ks=; b=bY1ebFmv8ciUlLrcyuS/NgQqK/+jwGA+/gOgVDJUAvhmRvfyvwYzp4zPAwzMYnk2l/ kcgzSXfYhBT8SFvfN2Cp0NkTPXzVUNssOFb/xr76XZADWqXubJXoWKAUjwp7AurHx+/b roJ9tlvspvAEeesBsv1ivenDrvB1Wn8TZfwDyccHkn+a51Gv7qFIzkcE8m3PYywm8PAk 1SYL6jqZLv+Lsf+qs25IGpCTELZa7QzkSoXIDQFvCe8SC6slBbvWQxiDEZiX9r+GO6cR pkJ89nkE8gXLigh9kLkQAvqRcoURSMeReG7HevtNO2kDNcBwFauTpELmDDnHbaEte8G3 D+Og== X-Gm-Message-State: AE9vXwOcw/qKCd+EWGvwNxHBq0pmMRJJFXwm6aQ+lBUuRSx/An8o5+ysKrepP3ivl2WSBg== X-Received: by 10.157.56.130 with SMTP id p2mr9800912otc.93.1473482286411; Fri, 09 Sep 2016 21:38:06 -0700 (PDT) Received: from Rodgers-MacBook-Pro.local.net (c-73-209-137-129.hsd1.il.comcast.net. [73.209.137.129]) by smtp.gmail.com with ESMTPSA id s185sm3616106ita.21.2016.09.09.21.38.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 09 Sep 2016 21:38:05 -0700 (PDT) From: Rodger Combs To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Sep 2016 23:37:22 -0500 Message-Id: <20160910043725.98484-8-rodger.combs@gmail.com> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20160910043725.98484-1-rodger.combs@gmail.com> References: <20160910043725.98484-1-rodger.combs@gmail.com> Subject: [FFmpeg-devel] [PATCH 08/11] lavf/rawenc: add automatic bitstream filtering for H264+HEVC 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" --- libavformat/rawenc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index c4d7a90..730e99a 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -20,8 +20,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/intreadwrite.h" + #include "avformat.h" #include "rawenc.h" +#include "internal.h" int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt) { @@ -236,6 +239,15 @@ AVOutputFormat ff_h263_muxer = { #endif #if CONFIG_H264_MUXER +static int h264_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) +{ + AVStream *st = s->streams[0]; + if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && + AV_RB24(pkt->data) != 0x000001) + return ff_stream_add_bitstream_filter(st, "h264_mp4toannexb", NULL); + return 1; +} + AVOutputFormat ff_h264_muxer = { .name = "h264", .long_name = NULL_IF_CONFIG_SMALL("raw H.264 video"), @@ -244,11 +256,21 @@ AVOutputFormat ff_h264_muxer = { .video_codec = AV_CODEC_ID_H264, .write_header = force_one_stream, .write_packet = ff_raw_write_packet, + .check_bitstream = h264_check_bitstream, .flags = AVFMT_NOTIMESTAMPS, }; #endif #if CONFIG_HEVC_MUXER +static int hevc_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) +{ + AVStream *st = s->streams[0]; + if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && + AV_RB24(pkt->data) != 0x000001) + return ff_stream_add_bitstream_filter(st, "hevc_mp4toannexb", NULL); + return 1; +} + AVOutputFormat ff_hevc_muxer = { .name = "hevc", .long_name = NULL_IF_CONFIG_SMALL("raw HEVC video"), @@ -257,6 +279,7 @@ AVOutputFormat ff_hevc_muxer = { .video_codec = AV_CODEC_ID_HEVC, .write_header = force_one_stream, .write_packet = ff_raw_write_packet, + .check_bitstream = hevc_check_bitstream, .flags = AVFMT_NOTIMESTAMPS, }; #endif