From patchwork Thu Sep 3 18:55:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22080 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 365C144909D for ; Thu, 3 Sep 2020 21:55:37 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1CA426806C5; Thu, 3 Sep 2020 21:55:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f193.google.com (mail-qt1-f193.google.com [209.85.160.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 374DA6806AA for ; Thu, 3 Sep 2020 21:55:30 +0300 (EEST) Received: by mail-qt1-f193.google.com with SMTP id e7so2721668qtj.11 for ; Thu, 03 Sep 2020 11:55:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=TCDIqFycqUSTCXdba2WXsrSrV/JxV8ppzFsbTpC5GLQ=; b=RaokYuZILYW2pE6UwUucxskuRkSiJD+Q597roaONKkcMGMseAYI6dGA5uQi4QGDLgR U3oy6G+5EqbJ3gjVUeSbaAWO1nVOEoDA5Upyyfxa+sDQ+TPpujiPaKme3bYLbELuUug1 BB35ebRVYkZ2BBPEpeobZeeH5bwQuI1+iDgG/myjHcpLOC8VUTi4RQ2U7XQHlDC8Od8g d+95MiBK3ZJidc8+5q+9jXdlNd1U3UkrYqieSta/9aKVspRqloW0tI8FTeVvhuu6UZzX Tk90T3ckTjh1yieywSTCEITfzjCDjlgJCn/LuXsdd38JlMopC7AM8/J82euzI4mdZgLM aQQQ== 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:mime-version :content-transfer-encoding; bh=TCDIqFycqUSTCXdba2WXsrSrV/JxV8ppzFsbTpC5GLQ=; b=GKXN0IJwARCNEIMJb5lwJE5bE8vBvGwjLEFccl4OVbN/Jgix5ijxnR4EpIV5aHbHgB IdJYNTrdJ5dKyDzr0IMoemVT7SPXzjnV9wgjyWWJ6vSpAnMXpls8RhMcHaA4K3XUAMKn M3c25iObbuDsSxmA+NVDRMK/o2Qr9+8My3/nvwi4XVP2/mh3duMsJVHaulonMqxdokV0 PIMMwZ3I9eH1R1CT0O0FgYICnN7vw5Q1j4c5AFx/XJSVJoXTThzD9zxZ8HgxlPJoPxIV +z3ozPugnKjfJkgdmYiViP+i1X1BRn1ByvpbsgUI5vYsVH7/xn1FvVgNp1RZdvcHf7gc WYVg== X-Gm-Message-State: AOAM5306/1trefZe/miarfq+uX0czmP+quOerXT15TYD9eLkd6n6aTOj J2b7pv8jhdDYGi9+Ap4f6EgIvT3Omck= X-Google-Smtp-Source: ABdhPJxcI9Xr0Qq2N2BJXooLoHfdr/7PuARzgtrnk5Wf+O64dcRYhM9jCawBABBkcZbYM6hdjH7P0A== X-Received: by 2002:aed:364a:: with SMTP id e68mr4859896qtb.260.1599159327916; Thu, 03 Sep 2020 11:55:27 -0700 (PDT) Received: from localhost.localdomain ([181.23.70.161]) by smtp.gmail.com with ESMTPSA id e24sm2606974qka.76.2020.09.03.11.55.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2020 11:55:26 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 3 Sep 2020 15:55:04 -0300 Message-Id: <20200903185505.1865-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/yuv4mpegenc: simplify writing the header 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" Actually write it in yuv4_write_header() instead of with the first packet. Signed-off-by: James Almer --- libavformat/yuv4mpegenc.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/libavformat/yuv4mpegenc.c b/libavformat/yuv4mpegenc.c index e84dbf9568..c4781042bd 100644 --- a/libavformat/yuv4mpegenc.c +++ b/libavformat/yuv4mpegenc.c @@ -26,14 +26,16 @@ #define Y4M_LINE_MAX 256 -static int yuv4_generate_header(AVFormatContext *s, char* buf) +static int yuv4_write_header(AVFormatContext *s) { AVStream *st; + AVIOContext *pb = s->pb; int width, height; int raten, rated, aspectn, aspectd, n; char inter; const char *colorspace = ""; const char *colorrange = ""; + char buf[Y4M_LINE_MAX + 1]; int field_order; st = s->streams[0]; @@ -173,7 +175,15 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf) Y4M_MAGIC, width, height, raten, rated, inter, aspectn, aspectd, colorspace, colorrange); - return n; + if (n < 0) { + av_log(s, AV_LOG_ERROR, + "Error. YUV4MPEG stream header write failed.\n"); + return AVERROR(EIO); + } + + avio_write(pb, buf, strlen(buf)); + + return 0; } @@ -182,26 +192,12 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) AVStream *st = s->streams[pkt->stream_index]; AVIOContext *pb = s->pb; AVFrame *frame; - int* first_pkt = s->priv_data; int width, height, h_chroma_shift, v_chroma_shift; int i; - char buf2[Y4M_LINE_MAX + 1]; uint8_t *ptr, *ptr1, *ptr2; frame = (AVFrame *)pkt->data; - /* for the first packet we have to output the header as well */ - if (*first_pkt) { - *first_pkt = 0; - if (yuv4_generate_header(s, buf2) < 0) { - av_log(s, AV_LOG_ERROR, - "Error. YUV4MPEG stream header write failed.\n"); - return AVERROR(EIO); - } else { - avio_write(pb, buf2, strlen(buf2)); - } - } - /* construct frame header */ avio_printf(s->pb, "%s\n", Y4M_FRAME_MAGIC); @@ -279,10 +275,8 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) return 0; } -static int yuv4_write_header(AVFormatContext *s) +static int yuv4_init(AVFormatContext *s) { - int *first_pkt = s->priv_data; - if (s->nb_streams != 1) return AVERROR(EIO); @@ -347,7 +341,6 @@ static int yuv4_write_header(AVFormatContext *s) return AVERROR(EIO); } - *first_pkt = 1; return 0; } @@ -355,9 +348,9 @@ AVOutputFormat ff_yuv4mpegpipe_muxer = { .name = "yuv4mpegpipe", .long_name = NULL_IF_CONFIG_SMALL("YUV4MPEG pipe"), .extensions = "y4m", - .priv_data_size = sizeof(int), .audio_codec = AV_CODEC_ID_NONE, .video_codec = AV_CODEC_ID_WRAPPED_AVFRAME, + .init = yuv4_init, .write_header = yuv4_write_header, .write_packet = yuv4_write_packet, };