From patchwork Mon Feb 12 19:03:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gyan X-Patchwork-Id: 7576 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.150.1 with SMTP id c1csp196739jai; Mon, 12 Feb 2018 11:10:51 -0800 (PST) X-Google-Smtp-Source: AH8x226SjQIudZxMD4D6E3aXA8SXC4xG7QdleuEIaH5u5PmOrkC95MHC3MGK7/MnFWafVvzmFZAf X-Received: by 10.223.136.57 with SMTP id d54mr9802463wrd.163.1518462651534; Mon, 12 Feb 2018 11:10:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518462651; cv=none; d=google.com; s=arc-20160816; b=BRDxAFKY1dho8BKkdtcLHeYEnYDvRm0wdYHDZsjdl+w5EWfol7KYnPTwH0xO6tjSV4 IJz4egXtBxsSq4ikbusVXlkN0CV2ZPT6bnYZxvFPrQiDpkAiAC6X/RuHzSHte2K2OhcE xRwlY27mAkx8b71E1sp1GuGD4TlLtye/hf807gg6L43Ch5S9NnJi8aQCz0ylm44hkhLa a1GmXRbCckvCk/g/AEHQd7SogixzUtOU6C8nMmNjM7NAua/pkiPw01uq6asbyEKXaoma 5zW8dvFkcveLbaMDhQHb1RlUiD7+wbmdkkYcZr+ZpLvs7orLtVubE79eAVeGUJxsAzsL mVmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:dkim-signature:delivered-to :arc-authentication-results; bh=kIE8ad5Rw5jZCDUBb7u61HdAD8aCnBJ0TaANiNI7pTY=; b=SV/ShFnKnQjaNlpKbVLPerPLJv7di5jxJPtfClDj4p277W0tXB0+Tp8zE51ASpuS8U 7qzEq2mws9KTe3hUkTIp1k4lFuoW0gt3atnmLU79U4KrqCLjJTW/uuMoO85ATbp4PoOj Jaqskh9Rdv2sRanLoJRcdl7J9tPvxq5NvM6a9Kj/Vexa0e7gEWDHKsZDB3Hw3yaW3Nar 9s68/MkbEvl5eGaWMeMiJRDLhhHUDt7ViMKDjdS9COplsnPvFYkJKofWtOOUSFcMOxsL ecNNNSYzJ1Dze4vJ0/fjnqNDB+Iimb7Dt9H1suXG/oQXP9hxEtjq5qCq/hif1Rrmrv0D yHeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NbYiA45+; 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 sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 19si7009804wrt.156.2018.02.12.11.10.51; Mon, 12 Feb 2018 11:10:51 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NbYiA45+; 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 sp=QUARANTINE 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 38BAF689B63; Mon, 12 Feb 2018 21:10:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io0-f177.google.com (mail-io0-f177.google.com [209.85.223.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EF18B689AFC for ; Mon, 12 Feb 2018 21:10:32 +0200 (EET) Received: by mail-io0-f177.google.com with SMTP id e7so4223773ioj.1 for ; Mon, 12 Feb 2018 11:10:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=9mBWXH7i0hhRYSqX7XoEWRMXuIqju3j9eZ5XlBKIaPc=; b=NbYiA45+9F9iLssBHSNilmGZ5O5HbT+UVjuQKyh2vEhB6ZYAIcWkK9WyxIHAMyPdRU Qzcm7SJQqhpGtvMP7KAp5DoKKpmb7N+Hiv3124jp1hKdijT4VpnLTnWsCmyTUfBsDnZe 1KPM7g05xyq9Tig5me27oYDs/PMt4MTsWTmIw75uRknpq44tnotLs72qmvBOtorClKfR odX0CAcHeD1xypIeQ3RtJeuBbP4K7wh8AphKifHWsZPGQzPKaeuJKtNos1wXT0CVv85C goV2daVyt0Rlq/2kxPNDojmuIRLrvzibLNQ29hH89rfp9+iaDFQQE5Hr3aRYO7Xvsy5F l3Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=9mBWXH7i0hhRYSqX7XoEWRMXuIqju3j9eZ5XlBKIaPc=; b=X8cJpbR7K2BVpNl4kFt8kmRCP9uZ5ChBnJ+ma2293VOBX7WDdfe02XpAK+UF0FVGQd aM/SFmbBiWxMSPv5V87oIVyv0xG8AR2AYcMf7ypPVXe0fpYyS1NYx1n+irH4hctIphur SVzCVdH15HLEKuevh7m8VHT/a3yYl0GcFwBtcTYbqcYXaZUdMZeC2iKb1B2Y8bMmCA/d r/FkoFI9hCqKgnXe/JAmLBl5RvnjEfJAfH9WCRo47SVyfwFzBKQfIqk4crhq3xqVUhzZ ko2Z9NPJyScXOHdmFJSj/J+unEL5j2AIyvcuEmAssb6+cesDfknY68H73oGmpbUvg4SL 9ODQ== X-Gm-Message-State: APf1xPALSg/OqS44/FWPO/c9udm6ziUKdncDb4EPKl0CqH3B/lhbdx7d QVQRvX6staffqc4O4PhODPF+cB+r X-Received: by 10.107.63.68 with SMTP id m65mr15559244ioa.107.1518462240407; Mon, 12 Feb 2018 11:04:00 -0800 (PST) Received: from [192.168.1.3] ([103.206.133.133]) by smtp.gmail.com with ESMTPSA id f207sm7824053ita.26.2018.02.12.11.03.58 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 11:03:59 -0800 (PST) To: ffmpeg-devel@ffmpeg.org References: <294338e6-be38-88aa-7add-1b2f7ce84eab@gmail.com> <8c020b48-4ced-6f63-8752-948cf288e5fd@gmail.com> <0981c42c-946c-8796-4880-f752c2cc83dc@gmail.com> <20180202223255.GX3063@michaelspb> From: Gyan Doshi Message-ID: Date: Tue, 13 Feb 2018 00:33:56 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180202223255.GX3063@michaelspb> Content-Language: en-US Subject: Re: [FFmpeg-devel] [PATCH 3/4] avformat/mpegenc - accept PCM_DVD streams 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" On 2/3/2018 4:02 AM, Michael Niedermayer wrote: >> --- a/libavformat/mpegenc.c >> +++ b/libavformat/mpegenc.c >> + >> + if (st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) { >> + /* Skip first 3 bytes of packet data, which comprise PCM header >> + and will be written fresh by this muxer. */ >> + buf += 3; >> + size -= 3; > > Can this be reached with size < 3 ? > if so it would probably do something bad Possible if input file is badly muxed, but revised patch attached. FATE patch follows in next email. Regards, Gyan From 75d6236f1964d014f615acf4dc48dec43cadf6a1 Mon Sep 17 00:00:00 2001 From: Gyan Doshi Date: Wed, 7 Feb 2018 18:05:08 +0530 Subject: [PATCH v3] avformat/mpegenc - accept PCM_DVD streams PCM_S16BE stream packets in MPEG-PS have a 3-byte header and are recognized as PCM_DVD by the demuxer which prevents their correct remuxing in MPEG-1/2 PS. --- libavformat/mpegenc.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c index 695de3f081..895873accd 100644 --- a/libavformat/mpegenc.c +++ b/libavformat/mpegenc.c @@ -353,7 +353,8 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) if (!s->is_mpeg2 && (st->codecpar->codec_id == AV_CODEC_ID_AC3 || st->codecpar->codec_id == AV_CODEC_ID_DTS || - st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE)) + st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE || + st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD)) av_log(ctx, AV_LOG_WARNING, "%s in MPEG-1 system streams is not widely supported, " "consider using the vob or the dvd muxer " @@ -363,7 +364,12 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) stream->id = ac3_id++; } else if (st->codecpar->codec_id == AV_CODEC_ID_DTS) { stream->id = dts_id++; - } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE) { + } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE || + st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) { + if (st->codecpar->bits_per_coded_sample != 16) { + av_log(ctx, AV_LOG_ERROR, "Only 16 bit LPCM streams can be muxed.\n"); + goto fail; + } stream->id = lpcm_id++; for (j = 0; j < 4; j++) { if (lpcm_freq_tab[j] == st->codecpar->sample_rate) @@ -1150,6 +1156,19 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) return AVERROR(ENOMEM); pkt_desc->pts = pts; pkt_desc->dts = dts; + + if (st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) { + if (size < 3) { + av_log(ctx, AV_LOG_ERROR, "Invalid packet size %d\n", size); + return -1; + } + + /* Skip first 3 bytes of packet data, which comprise PCM header + and will be written fresh by this muxer. */ + buf += 3; + size -= 3; + } + pkt_desc->unwritten_size = pkt_desc->size = size; if (!stream->predecode_packet)