From patchwork Sat Oct 15 10:05:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Turner X-Patchwork-Id: 1013 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.133 with SMTP id o127csp304129vsd; Sat, 15 Oct 2016 10:24:36 -0700 (PDT) X-Received: by 10.194.150.206 with SMTP id uk14mr6175631wjb.139.1476552276040; Sat, 15 Oct 2016 10:24:36 -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 x20si30383274wju.228.2016.10.15.10.24.35; Sat, 15 Oct 2016 10:24:36 -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=QUARANTINE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E0FF9689B13; Sat, 15 Oct 2016 20:24:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f67.google.com (mail-it0-f67.google.com [209.85.214.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BEEB3680D2F for ; Sat, 15 Oct 2016 13:05:24 +0300 (EEST) Received: by mail-it0-f67.google.com with SMTP id e203so797183itc.1 for ; Sat, 15 Oct 2016 03:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=ySuwMxFyY5m89BY3QKzX/u47KASGXQzXOQTx6tNs7Dw=; b=tQm72XG8vMbnmjVcTZvC32qN/drMZJQ7mw707nN2ZVJM5WwvGx8LUD/7dX9y7uJJM1 /8fMUeNmAvic+1AwMPZHMQjrphLIlCkuvaP6o0o6cDIvqSvMZAUZwsVT/3P1Ph3sqWvh 0noztpfEDu/hOZ17JNmW9KGef99MzKF3W6k9RSQ5LDq8LUHoqGWj3LbzAmIry/YEifq6 ekknZn6EukFLUXdJcrwJjD5GdNQCSwXF3sSeg71EIyzCHh9wwPbRgPeoj3FObSgPwEiO 2wjBFqQYTDZ3c4hTutjKTnobLRZI8Gz+eAzQmtR5yZySpd7XLgm4/pu7+TD6ka9Mkprb XsQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ySuwMxFyY5m89BY3QKzX/u47KASGXQzXOQTx6tNs7Dw=; b=K/gL/ORVNrkWYWC/8k7lA+9Din6zswsUVtiiD2UQ8o63CUFEC5CQ8lJIY5vYNNjzze hqte7TgU9afw1CKewVuqB83SU74DnkrwPAsKlKnahFph1FFJUJpQcrWMIrzpXKkmv7wT JVf5qmXOXuEzAAm5HVcbFf93SCiuI/gsBZ+GOdiCjNxiyfqSkYazxBKIkn05gYXBeg5Q AQxyVJazMOsXOoJUgA1ENiFw5wmpVGMyddeiCwGgDYNPAoKsiBVvlouh7HBR4dc/fPEj XUqpHHWi1oqV5tmJvQKOfPnkLnNQHqTWh3ndbxOYhTVXRg34XGoHUZL2/l1Xm7rKQuve 7zpg== X-Gm-Message-State: AA6/9RmKDM55tCE4EpiEcbFx0Ika92vMJFHj6LQCAaG1PuwqKJHIpNGOsF/TnDbBUeAqqg== X-Received: by 10.36.40.133 with SMTP id h127mr1163464ith.1.1476525924782; Sat, 15 Oct 2016 03:05:24 -0700 (PDT) Received: from Zany.domain.actdsltmp ([47.136.133.132]) by smtp.gmail.com with ESMTPSA id f198sm9413042iof.17.2016.10.15.03.05.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 15 Oct 2016 03:05:23 -0700 (PDT) From: Thomas Turner X-Google-Original-From: Thomas Turner To: ffmpeg-devel@ffmpeg.org Date: Sat, 15 Oct 2016 03:05:11 -0700 Message-Id: <1476525912-26321-1-git-send-email-thomastdt@gmail.com> X-Mailer: git-send-email 1.9.1 X-Mailman-Approved-At: Sat, 15 Oct 2016 20:24:30 +0300 Subject: [FFmpeg-devel] [PATCH] Improved Selftest Coverage for libavcodec 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: michael@niedermayer.cc, Thomas Turner MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Added test for libavcodec/avpacket.c Function(s) tested: av_packet_clone() Signed-off-by: Thomas Turner --- libavcodec/Makefile | 3 +- libavcodec/tests/avpacket.c | 115 ++++++++++++++++++++++++++++++++++++++++++++ tests/fate/libavcodec.mak | 5 ++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 libavcodec/tests/avpacket.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index a1560ba..d64b8df 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1016,7 +1016,8 @@ SKIPHEADERS-$(CONFIG_VDA) += vda.h vda_vt_internal.h SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vda_vt_internal.h -TESTPROGS = imgconvert \ +TESTPROGS = avpacket \ + imgconvert \ jpeg2000dwt \ mathops \ options \ diff --git a/libavcodec/tests/avpacket.c b/libavcodec/tests/avpacket.c new file mode 100644 index 0000000..d02f2e2 --- /dev/null +++ b/libavcodec/tests/avpacket.c @@ -0,0 +1,115 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include "libavcodec/avcodec.h" + + + +static void LOG_AVPACKET(AVPacket* avpkt, const char* message) +{ + char buf_info[256]; + char data_info[256]; + + if(avpkt->buf) + sprintf(buf_info, "{buffer: %p, data: %p, size: %d}", + avpkt->buf->buffer, avpkt->buf->data, avpkt->buf->size); + else + sprintf(buf_info, "{}"); + + if(avpkt->data) + snprintf(data_info, avpkt->size + 3, "{%s}", avpkt->data); + else + sprintf(data_info, "{}"); + + av_log(NULL, AV_LOG_INFO, + "%s:\n\n" + "buf\t\t: %p " + "%s\n" + "pts\t\t: %" PRId64 "\n" + "dts\t\t: %" PRId64 "\n" + "data\t\t: %p " + "%s\n" + "size\t\t: %d\n" + "stream_index\t: %d\n" + "flags\t\t: %d\n" + "side_data\t: %p\n" + "side_data_elems\t: %d\n" + "duration\t: %" PRId64 "\n" + "pos\t\t: %" PRId64 "\n\n", + message, + avpkt->buf, + buf_info, + avpkt->pts, + avpkt->dts, + avpkt->data, + data_info, + avpkt->size, + avpkt->stream_index, + avpkt->flags, + avpkt->side_data, + avpkt->side_data_elems, + avpkt->duration, + avpkt->pos + ); +} + +static void TEST_AV_PACKET_CLONE(void) +{ + + AVPacket avpkt, *avpkt_ptr, *avpkt_clone; + + unsigned char buffer[] = "\x73\x65\x6c\x66\x74\x65\x73\x74\x20\x66\x6f\x72" + "\x20\x61\x76\x5f\x70\x61\x63\x6b\x65\x74\x5f\x63\x6c\x6f\x6e\x65\x28" + "\x2e\x2e\x2e\x29"; + + /* initialize avpkt */ + av_init_packet(&avpkt); + + /* try to make av_packet_clone fail */ + avpkt_clone = av_packet_clone(&avpkt); + + if(!avpkt_clone){ + av_log(NULL, AV_LOG_ERROR, "Error cloning packet.\n\n"); + } + + /* make av_packet_clone succeed */ + + /* fill data buffer */ + avpkt.data = buffer; + avpkt.size = sizeof(buffer); + + /* clone avpkt */ + avpkt_clone = av_packet_clone(&avpkt); + + if(avpkt_clone){ + avpkt_ptr= &avpkt; + LOG_AVPACKET(avpkt_ptr, "Original Packet info"); + LOG_AVPACKET(avpkt_clone, "Cloned Packet info"); + } + +} + +int main(void) +{ + TEST_AV_PACKET_CLONE(); + + return 0; +} diff --git a/tests/fate/libavcodec.mak b/tests/fate/libavcodec.mak index cf25285..3bc74c1 100644 --- a/tests/fate/libavcodec.mak +++ b/tests/fate/libavcodec.mak @@ -1,3 +1,8 @@ +FATE_LIBAVCODEC-yes += fate-avpacket +fate-avpacket: libavcodec/tests/avpacket$(EXESUF) +fate-avpacket: CMD = run libavcodec/tests/avpacket +fate-avpacket: REF = /dev/null + FATE_LIBAVCODEC-$(CONFIG_CABAC) += fate-cabac fate-cabac: libavcodec/tests/cabac$(EXESUF) fate-cabac: CMD = run libavcodec/tests/cabac