From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D520346093 for ; Mon, 3 Jul 2023 19:17:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 55F7A68C57F; Mon, 3 Jul 2023 22:17:52 +0300 (EEST) Received: from mail-oa1-f48.google.com (mail-oa1-f48.google.com [209.85.160.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3274268C551 for ; Mon, 3 Jul 2023 22:17:46 +0300 (EEST) Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-1b00b0ab0daso4315412fac.0 for ; Mon, 03 Jul 2023 12:17:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688411864; x=1691003864; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=3fJ4BW07eXgh5dT58IWD5IWiGgq9mU8Bzi26T7eFx10=; b=stSRQKu0qAesWjlFHBlnEAHkRgpEn6aM2sYRv1+UcmRexLId0WwvPRSqr30kleGdlo ad2TyADLkvu99UPnlqEj2ij5UyTK1v1ungSwBaCpjEd6VYzZerE/nzL4p8yP+6YmRlVL nacMhV76Q9o4HOSel2XrQtDh8u5lqVlt2jwmAyd2UoaEFd2UXPUeb6jZ/Th5Zk9MvJVe 8rZk6eO2JBcOR+O+eGEwdm7aRnfrY9YyNzUJdh7o9WQtaoIXjBUtE5eImciBrN5R2Ofn 7ucpjEA9KTE8I8wDvgUrCJlbopXAGPTohaer6CaC0XcNt+z+YjCs0BtbwzjNPDpB3piE a1SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688411864; x=1691003864; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3fJ4BW07eXgh5dT58IWD5IWiGgq9mU8Bzi26T7eFx10=; b=JCjoe+D0KjtabN9DaphuWNwsZPNa33YvCTrXyCntBZG6L7X7NnLeNBb8HjhR+1k/sA eM25pqYFGMYhlHVEHqTVhCDFNjx8KZRvJcnOVffdjEP/jWDpCsSCaAn8gtFe9PXck0JL DaiFgQW4FNXOTr/kieDsPOkIXyQsug+iD1C2KMDoXQCkbWmzhivoFIjWl5P/PmHN4jzk QH5C0c565J8KuBck9tmXuTbg0QprpdiNRoeo6/gy5OfEfjJfjok/j85Hhn2g8qpVxTl/ 9yIDnI15arzAvwMI6DVwuqPPcOSe1HMMFfSXsFmHiyIbG9gKAH1thBfjT7xvcFItLhpd fOig== X-Gm-Message-State: AC+VfDynYnTZ+eUiEEH7IrADEcDgsemRDS9jGdOHvMkdQj34Jqw2+o2b DRcInaLh6qiodoc2ojolHlYes54EPdHGYjOK X-Google-Smtp-Source: APBJJlGHR9B2gIjHa+01q2sANcxj/5t8+DFE7y/TK4DPaROzuRQcGyLyp30l3uaincQSpC8AEbAlTQ== X-Received: by 2002:a05:6870:e0cb:b0:1b0:c99:fd1e with SMTP id a11-20020a056870e0cb00b001b00c99fd1emr9806721oab.4.1688411863947; Mon, 03 Jul 2023 12:17:43 -0700 (PDT) Received: from [192.168.1.10] ([222.164.24.244]) by smtp.gmail.com with ESMTPSA id m9-20020a654389000000b00553d42a7cb5sm13338721pgp.68.2023.07.03.12.17.42 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 03 Jul 2023 12:17:43 -0700 (PDT) Message-ID: <143d82a2-e523-189c-a16a-07271ac0da78@gmail.com> Date: Tue, 4 Jul 2023 03:17:40 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 From: David Lou To: ffmpeg-devel@ffmpeg.org Content-Language: en-US Subject: [FFmpeg-devel] [PATCH v2] libavformat/data_uri: export mime_type of data urls X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Fix the fact that ffprobe no longer detects m3u8 in a data url correctly. For example, ffprobe data:application/vnd.apple.mpegurl;base64,I0VYVE0zVQojRVhULVgtVkVSU0lPTjozCiNFWFQtWC1UQVJHRVREVVJBVElPTjozMAojRVhUSU5GOjMwLApodHRwczovL2Rvd25sb2FkLnNhbXBsZWxpYi5jb20vbXA0L3NhbXBsZS0zMHMubXA0 This provides the mime_type hls detection requires. Thank you. Hopefully this patch doesn't get truncated by email again. Signed-off-by: David Lou --- libavformat/data_uri.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/libavformat/data_uri.c b/libavformat/data_uri.c index 28eb2b9e08..fdc1a2eef9 100644 --- a/libavformat/data_uri.c +++ b/libavformat/data_uri.c @@ -19,18 +19,24 @@ */ #include + #include "libavutil/avstring.h" #include "libavutil/avutil.h" #include "libavutil/base64.h" +#include "libavutil/opt.h" + #include "url.h" typedef struct { + const AVClass *class; const uint8_t *data; void *tofree; size_t size; size_t pos; + char *mime_type; } DataContext; + static av_cold int data_open(URLContext *h, const char *uri, int flags) { DataContext *dc = h->priv_data; @@ -56,8 +62,10 @@ static av_cold int data_open(URLContext *h, const char *uri, int flags) (int)(next - opt), opt); return AVERROR(EINVAL); } - av_log(h, AV_LOG_VERBOSE, "Content-type: %.*s\n", - (int)(next - opt), opt); + av_free(dc->mime_type); + dc->mime_type = av_strndup(opt, (int)(next - opt)); + av_log(h, AV_LOG_VERBOSE, "Content-type: %s\n", + dc->mime_type); } else { if (!av_strncasecmp(opt, "base64", next - opt)) { base64 = 1; @@ -110,10 +118,25 @@ static int data_read(URLContext *h, unsigned char *buf, int size) return size; } +#define OFFSET(x) offsetof(DataContext, x) + +static const AVOption options[] = { + { "mime_type", "export the MIME type", OFFSET(mime_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT | AV_OPT_FLAG_READONLY }, + { NULL } +}; + +static const AVClass data_context_class = { + .class_name = "data", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + const URLProtocol ff_data_protocol = { - .name = "data", - .url_open = data_open, - .url_close = data_close, - .url_read = data_read, - .priv_data_size = sizeof(DataContext), + .name = "data", + .url_open = data_open, + .url_close = data_close, + .url_read = data_read, + .priv_data_size = sizeof(DataContext), + .priv_data_class = &data_context_class, }; -- 2.41.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".