From patchwork Fri Oct 12 02:37:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 10644 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 196FF441003 for ; Fri, 12 Oct 2018 06:06:43 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D54368A2D4; Fri, 12 Oct 2018 06:06:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31DA3689E81 for ; Fri, 12 Oct 2018 06:06:17 +0300 (EEST) Received: by mail-pg1-f194.google.com with SMTP id f18-v6so5131373pgv.3 for ; Thu, 11 Oct 2018 20:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Adz1G6S7/lSflwthHtC0SX5Iz8RONQznc4zw/0ZPCNg=; b=LF2wBg+iMQibrWv0dqPj09f2Wsnvy1DVuL8ezKPrx+YqJ+Mbcw9pJZZVfxhdlaOXXB Jfjmd942iA8nyMICwjCT1Rpo/2I8SWCQ5H7JixPWEOAaFTQ6kTaxKi+VZhQ12qnByagW Fh12k1sLeDWCQrMOGa0X3An/LIz8l2AUmdBfTu03hEehZ+SMTmpssrjkB1OuPW0Y+yxt ZGQlblP+J9XMZTJszdEQvFe9kvHhJvhT5VBpIpa3W/VmK2dGmsWbA4Txvl3Dzw5PiVAj 6GWWVXvu5JuuPb8jf0gimSB7LCT0kR7tulLVPzJGdXyxDQyaQYBsbineR1EGmSav1CqJ y+4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Adz1G6S7/lSflwthHtC0SX5Iz8RONQznc4zw/0ZPCNg=; b=RqDlK2wOksZdKeX9uquAY9Vo/YXtx/y91EtHoXJV25HhrgQXZrNN1XEBZnaG8UOwnU LD71RXjcCUExjwg7Khr0c03/Yb0sE+N0/TpvvRd2uTnQUj+m46yhp0Cxrw1vBbMaWlB+ n8XweSDLekGp6qjAYfua4DuWNNl4zRwTDGuKmfd+pcpCZSB05gYNtc7ko7UzQu9HkQkF zLCtXAzzu67q8hNsUK6+38OrdkJ4cT6vqCp/6fKFepuFvxJgqVPJtFn/1YlZyJu9beLL jjhrqgbrs5glG6zwDvdYNYJ9x92jkAFgSwCzzAy5Ah11DtbMDO1i4b2728NkLuwUsCU7 C61w== X-Gm-Message-State: ABuFfogf3C0sbGha2p9VDtwHSYng3MJOC2NlutXI9sxFVcwILPysjtla Vlwew5wjiIMRGvggJzlRTLB+zjLTNTk= X-Google-Smtp-Source: ACcGV63WN3VbVSGTtisIBWOXU8AUPk0iLxSxerXHMJSxwtMBSUe2AkCSoziyodqPpOOOoztaGyVStw== X-Received: by 2002:a63:904a:: with SMTP id a71-v6mr3843384pge.264.1539311887642; Thu, 11 Oct 2018 19:38:07 -0700 (PDT) Received: from localhost.localdomain ([47.90.47.25]) by smtp.gmail.com with ESMTPSA id n7-v6sm16787807pgv.63.2018.10.11.19.38.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Oct 2018 19:38:06 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Fri, 12 Oct 2018 10:37:54 +0800 Message-Id: <1539311874-10925-1-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 1.7.1 Subject: [FFmpeg-devel] [PATCH] lavf/vc1test: fix vc1test can't probe some RCV file. 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: "Yan, FengX" , Jun Zhao , Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" case 1: use the hexdump -C SMM0005.rcv get: size skip (size - 4) | | V V 00000000 18 00 00 c5 05 00 00 00 4d f1 0a 11 00 e0 01 00 00000010 00 d0 02 00 00 0c 00 00 00 88 13 00 00 c0 65 52 ^ | size + 16 case 2: same the command for SMM0015.rcv get: size | V 00000000 19 00 00 c5 04 00 00 00 41 f3 80 01 40 02 00 00 00000010 d0 02 00 00 0c 00 00 00 00 00 00 10 00 00 00 00 ^ | size + 16 There are different the RCV file format for VC-1, vc1test just handle the case 2 now, this fix will support the case 1. (Both of test clips come from: RP 228:2008 - SMPTE Recommended Practice - VC-1 Decoder and Bitstream Conformance). Signed-off-by: Jun Zhao Signed-off-by: Yan, FengX --- libavformat/vc1test.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/libavformat/vc1test.c b/libavformat/vc1test.c index a801f4b..38eb1a4 100644 --- a/libavformat/vc1test.c +++ b/libavformat/vc1test.c @@ -34,9 +34,13 @@ static int vc1t_probe(AVProbeData *p) { + int size; + if (p->buf_size < 24) return 0; - if (p->buf[3] != 0xC5 || AV_RL32(&p->buf[4]) != 4 || AV_RL32(&p->buf[20]) != 0xC) + + size = AV_RL32(&p->buf[4]); + if (p->buf[3] != 0xC5 || AV_RL32(&p->buf[size+16]) != 0xC) return 0; return AVPROBE_SCORE_EXTENSION; @@ -48,10 +52,12 @@ static int vc1t_read_header(AVFormatContext *s) AVStream *st; int frames; uint32_t fps; + int size; frames = avio_rl24(pb); - if(avio_r8(pb) != 0xC5 || avio_rl32(pb) != 4) + if (avio_r8(pb) != 0xC5) return AVERROR_INVALIDDATA; + size = avio_rl32(pb); /* init video codec */ st = avformat_new_stream(s, NULL); @@ -63,6 +69,8 @@ static int vc1t_read_header(AVFormatContext *s) if (ff_get_extradata(s, st->codecpar, pb, VC1_EXTRADATA_SIZE) < 0) return AVERROR(ENOMEM); + + avio_skip(pb, size - 4); st->codecpar->height = avio_rl32(pb); st->codecpar->width = avio_rl32(pb); if(avio_rl32(pb) != 0xC) @@ -114,5 +122,6 @@ AVInputFormat ff_vc1t_demuxer = { .read_probe = vc1t_probe, .read_header = vc1t_read_header, .read_packet = vc1t_read_packet, + .extensions = "rcv", .flags = AVFMT_GENERIC_INDEX, };