From patchwork Mon Apr 23 06:10:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jeyapal, Karthick" X-Patchwork-Id: 8600 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp352513jad; Sun, 22 Apr 2018 23:11:16 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+sQ4YG3O8r8hxFCMJ79tcGgJKZ/UV2TTdoUCBXKkskXUxodTeoIyBIl+aFd1KzzTq3TwXX X-Received: by 2002:adf:e843:: with SMTP id d3-v6mr9107193wrn.146.1524463876163; Sun, 22 Apr 2018 23:11:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524463876; cv=none; d=google.com; s=arc-20160816; b=JMtspoLXkk85o9aStoDAXamWihJNGI3DNkqSQxkYY/zVK3lCwgYkrTyVnTjD/H+Gz+ FfF7ZdAWpPdCP37PxWMY4GeM9+xhhMkLbPfuTA3xvOFih8Mg+tHKsvQIc7I7dv053yw5 B44l5lmqtBOcsntwD8HJ3hIlKLxUVlum/1cwYL4EoZsTiN71zSGsUhYXJUARUQzTsOgu pbr7iRUSJxZ3L7UQ3eAHoniGwsNGrn1wImwddPOUsDH2CWADGu5BdwOXt76gXia7TWEw PrWbJeJh6emzBarfY2mthTxNdrmICX5K8YL4du3Kg+ccVKdLAebyvUn6olSAXGGUbRzu LiRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=yhf5CdangnjH1DNZwtRlYKswtaao7A6TZIpkwKDNuaY=; b=y6isEASBX6MpcSJ+zcVduOw62smUMgfoz1UxFL96Rv2KP+vJooayWuPAeJz2MK7zUM aM4Z9WA+rCX19rCmiO90WpdiMqm+ryrQw43pUbwBjtB2N2bEKi5yXNBKWiOZqesU4HcJ W8AdLC0yfGPlmSPIdvnRUKIX6QikQutLrMBGh19jOJ5NLucMZ8AC3i3iTlq+JtUJI9pU Vj2MVNGR40LF2fLG1o+krveIMyk/BMkhvEUeabpe2L1V1BaElkannlkXgYbjOslsQxgc JL6C/Vbt80uuyTKSJPm5OF0KPDfiy6oCYDZJjNuJK0JKmXbKa0hhOjYtt4TB/1Mth4Pd HLCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=fEg/PFwE; 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=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 58-v6si9439327wrv.330.2018.04.22.23.11.15; Sun, 22 Apr 2018 23:11:16 -0700 (PDT) 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=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=fEg/PFwE; 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=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1519C689FB7; Mon, 23 Apr 2018 09:10:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a1i318.smtp2go.com (a1i318.smtp2go.com [43.228.185.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7DBFD689C27 for ; Mon, 23 Apr 2018 09:10:38 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1524464773; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=7F/iQuKiaTxYQkWfIvxLOgMH4CzL1U+n4lKkWl0O4is=; b=fEg/PFwE pZtxBGUxO0M4VSFU7Z0JEj4IXTtP3VAAW8S6Pr6eFA9HIeSrzJTlulTB8DlBCMPYbP02A8CmBLNZm 5Ren12qA7XubaXEzF1dY/DWXwrhGU7+hWb3NU4uS++APFCUHpEmvtij6Mm9S/mxVDA1rDq3+dUTxL U7YjtLQT9NJWkPfo3MA9imLII6xmtbhMcTdIZDSqF4ZKs8PoBIh0z4DghwbUGJpIQS8LFcxvZNN0X /hWrpBkl4RN/JL+MhrIgW66QopofhYZW3v4E+yh+y6GOQziYwRMaBue2bSiecu8rZ2bKhN1VFzvG4 yOGyfi5GhJ75ioiNFY/b3YIZQg==; From: Karthick J To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Apr 2018 11:40:32 +0530 Message-Id: <1524463833-8025-2-git-send-email-kjeyapal@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1524463833-8025-1-git-send-email-kjeyapal@akamai.com> References: <490A8C35-01D3-4375-8FF0-94D99E5FA7EA@akamai.com> <1524463833-8025-1-git-send-email-kjeyapal@akamai.com> X-Smtpcorp-Track: 1fjlgpRyIRO-7O.3TM2ZRC1B Feedback-ID: 337386m:337386asVRLGB:337386sRfq1URvVL:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v2 2/3] avformat/dashenc: Set VP9 codec string with profile, level and bitdepth 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: Karthick Jeyapal MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Karthick Jeyapal Otherwise some versions of chrome browser returns "codec not supported" error --- libavformat/dashenc.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index fefe3ce..a5f58d4 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -45,6 +45,7 @@ #include "isom.h" #include "os_support.h" #include "url.h" +#include "vpcc.h" #include "dash.h" typedef struct Segment { @@ -170,8 +171,23 @@ static void dashenc_io_close(AVFormatContext *s, AVIOContext **pb, char *filenam } } +static void set_vp9_codec_str(AVFormatContext *s, AVCodecParameters *par, + AVRational *frame_rate, char *str, int size) { + VPCC vpcc; + int ret = ff_isom_get_vpcc_features(s, par, frame_rate, &vpcc); + if (ret == 0) { + av_strlcatf(str, size, "vp09.%02x.%02x.%02x", + vpcc.profile, vpcc.level, vpcc.bitdepth); + } else { + // Default to just vp9 in case of error while finding out profile or level + av_log(s, AV_LOG_WARNING, "Could not find VP9 profile and/or level\n"); + av_strlcpy(str, "vp9", size); + } + return; +} + static void set_codec_str(AVFormatContext *s, AVCodecParameters *par, - char *str, int size) + AVRational *frame_rate, char *str, int size) { const AVCodecTag *tags[2] = { NULL, NULL }; uint32_t tag; @@ -180,7 +196,11 @@ static void set_codec_str(AVFormatContext *s, AVCodecParameters *par, // common Webm codecs are not part of RFC 6381 for (i = 0; codecs[i].id; i++) if (codecs[i].id == par->codec_id) { - av_strlcpy(str, codecs[i].str, size); + if (codecs[i].id == AV_CODEC_ID_VP9) { + set_vp9_codec_str(s, par, frame_rate, str, size); + } else { + av_strlcpy(str, codecs[i].str, size); + } return; } @@ -1032,7 +1052,8 @@ static int dash_init(AVFormatContext *s) c->has_video = 1; } - set_codec_str(s, st->codecpar, os->codec_str, sizeof(os->codec_str)); + set_codec_str(s, st->codecpar, &st->avg_frame_rate, os->codec_str, + sizeof(os->codec_str)); os->first_pts = AV_NOPTS_VALUE; os->max_pts = AV_NOPTS_VALUE; os->last_dts = AV_NOPTS_VALUE; @@ -1132,7 +1153,8 @@ static void find_index_range(AVFormatContext *s, const char *full_path, } static int update_stream_extradata(AVFormatContext *s, OutputStream *os, - AVCodecParameters *par) + AVCodecParameters *par, + AVRational *frame_rate) { uint8_t *extradata; @@ -1149,7 +1171,7 @@ static int update_stream_extradata(AVFormatContext *s, OutputStream *os, os->ctx->streams[0]->codecpar->extradata = extradata; os->ctx->streams[0]->codecpar->extradata_size = par->extradata_size; - set_codec_str(s, par, os->codec_str, sizeof(os->codec_str)); + set_codec_str(s, par, frame_rate, os->codec_str, sizeof(os->codec_str)); return 0; } @@ -1298,7 +1320,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt) int64_t seg_end_duration, elapsed_duration; int ret; - ret = update_stream_extradata(s, os, st->codecpar); + ret = update_stream_extradata(s, os, st->codecpar, &st->avg_frame_rate); if (ret < 0) return ret;