Re: [rtcweb] New VP8 vs H.264 tests uploaded

"Mo Zanaty (mzanaty)" <mzanaty@cisco.com> Fri, 05 April 2013 16:24 UTC

Return-Path: <mzanaty@cisco.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6B22F21F97F4 for <rtcweb@ietfa.amsl.com>; Fri, 5 Apr 2013 09:24:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.598
X-Spam-Level:
X-Spam-Status: No, score=-10.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ppzrSLDX6-nD for <rtcweb@ietfa.amsl.com>; Fri, 5 Apr 2013 09:24:31 -0700 (PDT)
Received: from rcdn-iport-8.cisco.com (rcdn-iport-8.cisco.com [173.37.86.79]) by ietfa.amsl.com (Postfix) with ESMTP id 4162521F9643 for <rtcweb@ietf.org>; Fri, 5 Apr 2013 09:24:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=10751; q=dns/txt; s=iport; t=1365179071; x=1366388671; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=AiYHuwhp5/sJcC7xChMizKUVsV0g+IKmD8VZPePSHMw=; b=aFTb1eOYp72g9mwlYQOlat4BlE4pWYllK9gR+mOWHQdFgVIhYIFI/q53 ZKlvJukDAduXEvxVBEju78MrZvtL1pp9srzW3C4LZX4F++mHc+BmZSWag Fb7dQ6h/52vqoSvbVcC8uscAukNpuJsu0PbMWYIyxQXDZveCnriKUmMLe U=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AgMFABz6XlGtJXHA/2dsb2JhbABLgkJENsEegQwWdIIfAQEBBC0+CRUCAQgVDR0HMhQRAgQBEgiIDMFxiQeFYyYRAYJfYQOIRJ83gwuCKA
X-IronPort-AV: E=Sophos; i="4.87,415,1363132800"; d="scan'208,217"; a="195490355"
Received: from rcdn-core2-5.cisco.com ([173.37.113.192]) by rcdn-iport-8.cisco.com with ESMTP; 05 Apr 2013 16:24:30 +0000
Received: from xhc-aln-x03.cisco.com (xhc-aln-x03.cisco.com [173.36.12.77]) by rcdn-core2-5.cisco.com (8.14.5/8.14.5) with ESMTP id r35GOUut015510 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Fri, 5 Apr 2013 16:24:30 GMT
Received: from xmb-rcd-x14.cisco.com ([169.254.4.51]) by xhc-aln-x03.cisco.com ([173.36.12.77]) with mapi id 14.02.0318.004; Fri, 5 Apr 2013 11:24:30 -0500
From: "Mo Zanaty (mzanaty)" <mzanaty@cisco.com>
To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>, "rtcweb@ietf.org" <rtcweb@ietf.org>
Thread-Topic: [rtcweb] New VP8 vs H.264 tests uploaded
Thread-Index: AQHOMVU+Hnjec1L9ZkOY54Vzu17WCpjGSHWggADNiwCAAJYR0A==
Date: Fri, 05 Apr 2013 16:24:29 +0000
Message-ID: <3879D71E758A7E4AA99A35DD8D41D3D90F69B5D3@xmb-rcd-x14.cisco.com>
References: <CAPVCLWbajJNS-DbXS-AJjakwovBKhhpXAmBaR_LYKjCyk7UnYg@mail.gmail.com> <515D3FA1.6050305@gmail.com> <515D96A2.1000602@cisco.com> <CAGgHUiRLAmGz7H5iY_cpiiKPPN6JXo1jc2-U7TZLe6k-qETo9Q@mail.gmail.com> <3879D71E758A7E4AA99A35DD8D41D3D90F69B243@xmb-rcd-x14.cisco.com> <515E1734.90702@gmail.com>
In-Reply-To: <515E1734.90702@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.150.30.39]
Content-Type: multipart/alternative; boundary="_000_3879D71E758A7E4AA99A35DD8D41D3D90F69B5D3xmbrcdx14ciscoc_"
MIME-Version: 1.0
Subject: Re: [rtcweb] New VP8 vs H.264 tests uploaded
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 05 Apr 2013 16:24:33 -0000

Check your output x264 streams for fillers. If you see fillers (NAL unit type 12), you are wasting bandwidth. In the example below, almost half the bitrate was wasted on fillers and other stuff (SEI) that are not real frames. Over RTP, you would waste even more than half the link bandwidth since the small SEIs would incur the full overhead of separate RTP packets. (40 bytes of RTP/UDP/IP overhead for 10 bytes of SEI.)

Mo


From: rtcweb-bounces@ietf.org [mailto:rtcweb-bounces@ietf.org] On Behalf Of Sergio Garcia Murillo

El 05/04/2013 1:28, Mo Zanaty (mzanaty) escribió:
Realtime/low latency and constrained bitrate are obviously important for the actual implementation used. Thomas was pointing out that these factors have nothing to do with the codec technology itself, since they are purely encoder implementation optimizations. There is nothing in the VP8 or H.264 standard that uniquely provides realtime/low latency or constrained bitrate. Those are attributes of encoder implementations which are not part of the standard.

So the question was whether we care about evaluating codec technology or specific implementations. If the former, then tests should be staged in the same way codec experts evaluate codec technology/tools. If the latter, then tests should be staged using the target implementations.

I'm not aware of conferencing applications which use x264, because it was designed and optimized for transcoding (dvd rips to blu-ray) not conferencing. Most importantly, x264 cbr mode is inappropriate for conferencing since it is for broadcast MPEG transport streams that must be absolutely CBR to avoid M2TS-mux overflow or underflow, and it will actually insert filler data instead of real frame data to hit the CBR rate exactly. Looking at the results which show the worst H.264 bitrate (62% above VP8) in gipsrecstat_1280_720_50_1485kbps.mkv, there is almost as much filler data as real frame data, meaning the true bitrate of real frame data is almost half what is reported in the results. (See attached if it makes it through.)

I have been using x264 with very good results in my mcu implementation, the parameters I use are:

    params.rc.i_rc_method           = X264_RC_ABR;
    params.rc.i_bitrate                   = bitrate;
    params.rc.i_vbv_max_bitrate = bitrate;
    params.rc.i_vbv_buffer_size   = bitrate/fps;
    params.rc.f_vbv_buffer_init    = 0;
    params.rc.f_rate_tolerance    = 0.1;
    params.b_intra_refresh           = 1;

I have a smooth and constant bitrate near the target bitrate, which is something I still have not been able to do with VP8 encoder yet (if someone nows the trick, it will be very welcome!).

Best regards
Sergio