From patchwork Thu May 24 08:40:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Steven X-Patchwork-Id: 9071 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp1813487jad; Thu, 24 May 2018 01:41:19 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqlRLqmtYlZHCH4htnqjQ8U2nMIHsoaIaT+UpusaI2/lHDLQ4MWb2t8Q63rRvRgIBBlN/BX X-Received: by 2002:adf:85f4:: with SMTP id 49-v6mr5197500wru.33.1527151279882; Thu, 24 May 2018 01:41:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527151279; cv=none; d=google.com; s=arc-20160816; b=tTCNbYemB+BjOwh2qwsx07aHrOP4dCEaFKQddJ/FIHZ6mv6nly07YlThybuO92NdUa aFHdNOnhWykiPYpvv0wlqsxI/yfx7/eZoZhUeaKnUWlU2bYH8/I78lb3adcI8r9UdddH MQrGbNkloz+7AVpyKZbzAKZGDShrwkVOqp5ex4ngRXARkTTmKxKBKA4lqWgqo0B6cBo7 T86x/cnbQcIbeCnkvIZIZs4mT3vqc5QJW4LvkC8R4EOm0oma1EDxrIUHaqv83n/+pCIv 1FBjEqAM0iMiStzelvvSb2N3uIPTQVAUHuVzPzvyTnmKqFMB661buoZNVAJH3GWpd5HW p0UQ== 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:message-id:date:to:from :delivered-to:arc-authentication-results; bh=/jgBDAcsNirp47Iu9tz9pYAzpP8yDX2Ag2HlLeG8eFY=; b=Y2DBjUkA58b2sPLxjxfcDmVGTdd/6cEToDfdhBoplE3yfpNE+DibMCihTG4wsx52Nz +T2VHoaS+cd//35wBEKuT/y0Z1clZdNWDEqrGno6TQIKIyImOgvYG7ovMTwrPdosxagV IXCY+rl+D66UE2kautFQAkiE58X8m0N+wOPz7uPK/k+rP1EBA201ZXSG3XVqvdh1W/z6 ugtUFxkj+hg0CCGUn22LfSAbK2/IQN6fzvGfyuFeX7RnAq2lyYvU34G15TgtwzBb90oz 63yXHH81AlwzYijnX9rK2+BYCnRTslIwuBjtj3/0H7HsZ+VTHbGRpMyfjIUfpvlsUAY+ aXJQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 3-v6si18409258wrw.151.2018.05.24.01.41.19; Thu, 24 May 2018 01:41:19 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AF1FD68A342; Thu, 24 May 2018 11:40:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA42368A169 for ; Thu, 24 May 2018 11:40:27 +0300 (EEST) X-QQ-mid: bizesmtp18t1527151234tbkaub56 Received: from localhost (unknown [47.90.47.25]) by esmtp6.qq.com (ESMTP) with id ; Thu, 24 May 2018 16:40:34 +0800 (CST) X-QQ-SSF: 01100000002000F0FLF0000A0000000 X-QQ-FEAT: R/yWRekfFcrlzddnDYoRBjPhA7VonDa693zi/PSzcijrDQPXuO3DHYDHAZish qNulDgqs0C+cTmq3AP3z7tSdWgLdgQBjJ7/qMcv7XjtKDg9QqurgNOIGfnrRyQCFyMtHEvK nAnDFOAjlXgzzBoiUqRJoteMoE9qryybNhevSCcLcjiv29ppvmAY7RmaRu0B5laz49PLIG4 WlDirW1UpwNbthtAtfIpVesaMt69VL3acw+oVj5eybSVcDLvPP1JOvPypEyo8Ucnf2x+Xk1 5plHb637N8xMP1Rc34laadokDwZz1tvEHklw== X-QQ-GoodBg: 0 From: Steven Liu To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 May 2018 16:40:27 +0800 Message-Id: <20180524084027.30592-1-lq@chinaffmpeg.org> X-Mailer: git-send-email 2.10.1.382.ga23ca1b.dirty X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:chinaffmpeg.org:qybgforeign:qybgforeign2 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH] avformat/dashdec: remove unused functions and process code 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: Steven Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Based on a patch for hls by Richard Shaffer Signed-off-by: Steven Liu --- libavformat/dashdec.c | 46 ++++++++-------------------------------------- 1 file changed, 8 insertions(+), 38 deletions(-) diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c index 89f3ac2759..361dd52849 100644 --- a/libavformat/dashdec.c +++ b/libavformat/dashdec.c @@ -143,9 +143,6 @@ typedef struct DASHContext { int is_live; AVIOInterruptCB *interrupt_callback; - char *user_agent; ///< holds HTTP user agent set as an AVOption to the HTTP protocol context - char *cookies; ///< holds HTTP cookie values set in either the initial response or as an AVOption to the HTTP protocol context - char *headers; ///< holds HTTP headers set as an AVOption to the HTTP protocol context char *allowed_extensions; AVDictionary *avio_opts; int max_url_size; @@ -377,24 +374,6 @@ static void free_audio_list(DASHContext *c) c->n_audios = 0; } -static void set_httpheader_options(DASHContext *c, AVDictionary **opts) -{ - // broker prior HTTP options that should be consistent across requests - av_dict_set(opts, "user_agent", c->user_agent, 0); - av_dict_set(opts, "cookies", c->cookies, 0); - av_dict_set(opts, "headers", c->headers, 0); - if (c->is_live) { - av_dict_set(opts, "seekable", "0", 0); - } -} -static void update_options(char **dest, const char *name, void *src) -{ - av_freep(dest); - av_opt_get(src, name, AV_OPT_SEARCH_CHILDREN, (uint8_t**)dest); - if (*dest) - av_freep(dest); -} - static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url, AVDictionary *opts, AVDictionary *opts2, int *is_http) { @@ -448,11 +427,9 @@ static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url, av_opt_get(*pb, "cookies", AV_OPT_SEARCH_CHILDREN, (uint8_t**)&new_cookies); if (new_cookies) { - av_free(c->cookies); - c->cookies = new_cookies; + av_dict_set(&opts, "cookies", new_cookies, AV_DICT_DONT_STRDUP_VAL); } - av_dict_set(&opts, "cookies", c->cookies, 0); } av_dict_free(&tmp); @@ -1139,7 +1116,7 @@ static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in) if (!in) { close_in = 1; - set_httpheader_options(c, &opts); + av_dict_copy(&opts, c->avio_opts, 0); ret = avio_open2(&in, url, AVIO_FLAG_READ, c->interrupt_callback, &opts); av_dict_free(&opts); if (ret < 0) @@ -1584,7 +1561,7 @@ static int open_input(DASHContext *c, struct representation *pls, struct fragmen if (!url) { goto cleanup; } - set_httpheader_options(c, &opts); + if (seg->size >= 0) { /* try to restrict the HTTP request to the part we want * (if this is in fact a HTTP request) */ @@ -1731,7 +1708,7 @@ end: static int save_avio_options(AVFormatContext *s) { DASHContext *c = s->priv_data; - const char *opts[] = { "headers", "user_agent", "user_agent", "cookies", NULL }, **opt = opts; + const char *opts[] = { "headers", "user_agent", "cookies", NULL }, **opt = opts; uint8_t *buf = NULL; int ret = 0; @@ -1910,24 +1887,19 @@ static void copy_init_section(struct representation *rep_dest, struct representa static int dash_read_header(AVFormatContext *s) { - void *u = (s->flags & AVFMT_FLAG_CUSTOM_IO) ? NULL : s->pb; DASHContext *c = s->priv_data; int ret = 0; int stream_index = 0; int i; c->interrupt_callback = &s->interrupt_callback; - // if the URL context is good, read important options we must broker later - if (u) { - update_options(&c->user_agent, "user_agent", u); - update_options(&c->cookies, "cookies", u); - update_options(&c->headers, "headers", u); - } - if ((ret = parse_manifest(s, s->url, s->pb)) < 0) + if ((ret = save_avio_options(s)) < 0) goto fail; - if ((ret = save_avio_options(s)) < 0) + av_dict_set(&c->avio_opts, "seekable", "0", 0); + + if ((ret = parse_manifest(s, s->url, s->pb)) < 0) goto fail; /* If this isn't a live stream, fill the total duration of the @@ -2091,8 +2063,6 @@ static int dash_close(AVFormatContext *s) free_audio_list(c); free_video_list(c); - av_freep(&c->cookies); - av_freep(&c->user_agent); av_dict_free(&c->avio_opts); av_freep(&c->base_url); return 0;