From patchwork Sun Jun 14 12:21:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 20345 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 DF90744ABB4 for ; Sun, 14 Jun 2020 15:22:16 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AB58168B690; Sun, 14 Jun 2020 15:22:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f65.google.com (mail-ed1-f65.google.com [209.85.208.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AC0AC68AF49 for ; Sun, 14 Jun 2020 15:22:09 +0300 (EEST) Received: by mail-ed1-f65.google.com with SMTP id s28so7439831edw.11 for ; Sun, 14 Jun 2020 05:22:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=dnjOH/oL2/7ES0xDy2ExS7tYVSOa6jOjwMIb4VbJZPA=; b=W9Tfc1qzmpNuo0P/8aCMcQCLH6yozFNbnRNuNgjF9p8OlvQGaRV9Jiwyo+GiS0RwRA qxloFp+zyannYS+RYf2l9yyhPrvVoha7h0UZzDKLlr7dOqOwCleg+74RSOFHooztZL11 4j+EhUAk9C4SkpGqaI5Kn1ljzaH9yTnDpYkWX5+gl0Ty2yhb7zhnR8hn5ZCHStj5wfef 34ctNfI8n8314IMjA4VvGkRuXK+vsprXyF+ZauwXJZUvGYASU6A827+91gAnCGrxoFr3 M3Li7HsrvLhaECiMfhmNhJotDG04zaowuRIyLl/BIOYRZ1iHgBtPEXOUdUzr1hFSMLQ3 p5Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=dnjOH/oL2/7ES0xDy2ExS7tYVSOa6jOjwMIb4VbJZPA=; b=cc6zbl5xPdieulWDShDdEp1H3AHnQ91nRx/tNs0Z/lrSphw4sUrEiTgRACWg42Int+ IE3BA7T3fXyJaYmCO2ID8jpW1mU51AZWdgksQAT9Vv28HUoC5opZSBTUGEMRw2kCXd75 wzh6gc9Ijzcy55RIhhzUH5WItfBkbuXRF0ibwNvoIASHE3s5NYSRJoH4XTIc4flzXAoS 2G3tls82SL2DLZSbXdQDAjkb+s+3jFgJlibIUWpy3+zNW0qFCp/u8jwT7URC5a2vxh0Y IS1Fa83IaMC1/re1OgwxsTGbKha1ptrjXU3fHH/IzHcXiGIF/IpKmVqYiMgaGSB9NAt+ iT5Q== X-Gm-Message-State: AOAM530aX4UggHRaUF3tcWNn233im7t8p5dEYERKoPMxnk7qsgpuneHW abX9bXO6TqFmAIIWyA7Wq+b6AKoap4g= X-Google-Smtp-Source: ABdhPJwnYzvma1XDIm+82ouC0Oj4zDLjVoYzwvvOYgh+ihwTbsgM2disH5pIbH9nQYVlKK5n1J+GXA== X-Received: by 2002:a05:6402:1512:: with SMTP id f18mr20226142edw.101.1592137328809; Sun, 14 Jun 2020 05:22:08 -0700 (PDT) Received: from localhost.localdomain ([37.244.249.74]) by smtp.gmail.com with ESMTPSA id qp15sm7037582ejb.69.2020.06.14.05.22.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2020 05:22:08 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sun, 14 Jun 2020 14:21:50 +0200 Message-Id: <20200614122150.21574-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH] avformat/mov: fix demuxing of eia-608 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" Fixes #4616. Signed-off-by: Paul B Mahol --- libavformat/mov.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 2fc27d2aec..6d83a8a4b3 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -7854,6 +7854,27 @@ static int mov_change_extradata(MOVStreamContext *sc, AVPacket *pkt) return 0; } +static int get_eia608_packet(AVIOContext *pb, AVPacket *pkt, int size) +{ + int new_size, ret; + + if (size <= 8) + return AVERROR_INVALIDDATA; + new_size = ((size - 8) / 2) * 3; + ret = av_new_packet(pkt, new_size); + if (ret < 0) + return ret; + + avio_skip(pb, 8); + for (int j = 0; j < new_size; j += 3) { + pkt->data[j] = 0xFC; + pkt->data[j+1] = avio_r8(pb); + pkt->data[j+2] = avio_r8(pb); + } + + return 0; +} + static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) { MOVContext *mov = s->priv_data; @@ -7898,6 +7919,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) goto retry; } + if (st->codecpar->codec_id == AV_CODEC_ID_EIA_608 && sample->size > 8) + ret = get_eia608_packet(sc->pb, pkt, sample->size); + else ret = av_get_packet(sc->pb, pkt, sample->size); if (ret < 0) { if (should_retry(sc->pb, ret)) {