From patchwork Mon Aug 10 15:49:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 21585 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 CB7C844A9A5 for ; Mon, 10 Aug 2020 18:50:22 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B45F468AAF6; Mon, 10 Aug 2020 18:50:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9DD0368AAF6 for ; Mon, 10 Aug 2020 18:50:15 +0300 (EEST) Received: by mail-qk1-f180.google.com with SMTP id m7so8720546qki.12 for ; Mon, 10 Aug 2020 08:50:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=cUVb2zOU8C3L8CRWud5dQMBwcv17HoXtOqqln/W67DY=; b=TSt5ZNDZy6gEAtXi/M6BitvhW1dVE+mlY6p3cwPNgCxlSWXB3n/RSTdN9gY9a/qCem EQcRPTo8OmBfJaL4QBninVWRy+WSW74AyvjB7GuyI8iv+HDeRUntVoRBi8hezZvvhbNi 68LPn+leWMwdN3kM30GeOyQkEJFDtvzN6SuTmy+lpucxI4lFZgCTtjCgzkklssdL6QRe CDILqiHHgJFHgLxDSvLezHrGttp6nF7nLzGx3gZPj1mqbKce7a5zQrqOlTZIGdnSqqe1 xUomv6IXdUqyLU1+PHOTgK+59JD62zCsxMODMJIUPPDhh2rF9ysjDCqiULIHXjKO3dr2 s66w== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=cUVb2zOU8C3L8CRWud5dQMBwcv17HoXtOqqln/W67DY=; b=n56YeTdg8wkbs4DBz6wxNA4zSb3zF/VaUUIzcfyU5OxpZyE2cyFweSneERwUZqplAd NVxB5DmRgvxrcsJDKkQXs8DXfpgZjTF+yXPOjNGyvFYIDgGvsdUrn0X4pLsLOK7EuyOr kLwFvXuZvrZFSbcpjs343/qdmIa0zMTYNRTxisdvLEatUjN/yhsBOl2Bj00ZqXV6X/sb MfyP1I5Azw4cyr5dkGfq3f3g6Ml07eU/XCMSGp6cXxXcXgFc0sG93kC8LrImSRZd082k JwG/AG+1Aol+aVv6bzwbpbkCV5ZbQzD7t90kRV7hVqZK+c619H4feKkNwHX1xBnFXpU/ 14rw== X-Gm-Message-State: AOAM5307lwtwGy3wyMGETq7vYnaolFA3NvryuRdf4OUTgNYCRYmlYIZV BQ2CKlUzlOt87fg0PQKyVDLLlrP+ X-Google-Smtp-Source: ABdhPJxgS1/hEBKNji7C28VO0M7xo6HhDRSz/GDIsFgu0q6bFAqO4YdlbTKq4VwQuxGWLgB1V4naig== X-Received: by 2002:a05:620a:13cf:: with SMTP id g15mr25247360qkl.48.1597074613836; Mon, 10 Aug 2020 08:50:13 -0700 (PDT) Received: from localhost.localdomain ([181.23.72.45]) by smtp.gmail.com with ESMTPSA id o15sm13793249qkk.95.2020.08.10.08.50.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Aug 2020 08:50:13 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Aug 2020 12:49:40 -0300 Message-Id: <20200810154941.4988-4-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200810154941.4988-1-jamrial@gmail.com> References: <20200810154941.4988-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/5] avcodec/hevc_sei: use ff_parse_a53_cc() to parse A53 Closed Captions 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" Signed-off-by: James Almer --- configure | 2 +- libavcodec/hevc_sei.c | 49 +++++++------------------------------------ 2 files changed, 9 insertions(+), 42 deletions(-) diff --git a/configure b/configure index 5fd966035f..762e74a8ab 100755 --- a/configure +++ b/configure @@ -2743,7 +2743,7 @@ h264_decoder_suggest="error_resilience" hap_decoder_select="snappy texturedsp" hap_encoder_deps="libsnappy" hap_encoder_select="texturedspenc" -hevc_decoder_select="bswapdsp cabac golomb hevcparse videodsp" +hevc_decoder_select="atsc_a53 bswapdsp cabac golomb hevcparse videodsp" huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp" huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp" hymt_decoder_select="huffyuv_decoder" diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index a4ec65dc1a..06e7a3a10c 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -22,6 +22,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "atsc_a53.h" #include "golomb.h" #include "hevc_ps.h" #include "hevc_sei.h" @@ -164,51 +165,17 @@ static int decode_nal_sei_pic_timing(HEVCSEI *s, GetBitContext *gb, const HEVCPa static int decode_registered_user_data_closed_caption(HEVCSEIA53Caption *s, GetBitContext *gb, int size) { - int flag; - int user_data_type_code; - int cc_count; + int ret; if (size < 3) return AVERROR(EINVAL); - user_data_type_code = get_bits(gb, 8); - if (user_data_type_code == 0x3) { - skip_bits(gb, 1); // reserved - - flag = get_bits(gb, 1); // process_cc_data_flag - if (flag) { - skip_bits(gb, 1); - cc_count = get_bits(gb, 5); - skip_bits(gb, 8); // reserved - size -= 2; - - if (cc_count && size >= cc_count * 3) { - int old_size = s->buf_ref ? s->buf_ref->size : 0; - const uint64_t new_size = (old_size + cc_count - * UINT64_C(3)); - int i, ret; - - if (new_size > INT_MAX) - return AVERROR(EINVAL); - - /* Allow merging of the cc data from two fields. */ - ret = av_buffer_realloc(&s->buf_ref, new_size); - if (ret < 0) - return ret; - - for (i = 0; i < cc_count; i++) { - s->buf_ref->data[old_size++] = get_bits(gb, 8); - s->buf_ref->data[old_size++] = get_bits(gb, 8); - s->buf_ref->data[old_size++] = get_bits(gb, 8); - } - skip_bits(gb, 8); // marker_bits - } - } - } else { - int i; - for (i = 0; i < size - 1; i++) - skip_bits(gb, 8); - } + ret = ff_parse_a53_cc(&s->buf_ref, gb->buffer + get_bits_count(gb) / 8, size); + + if (ret < 0) + return ret; + + skip_bits_long(gb, size * 8); return 0; }