From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 926364C8F0 for ; Thu, 26 Jun 2025 06:37:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id DB55768E0DD; Thu, 26 Jun 2025 09:36:57 +0300 (EEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id DF7D568DEAB for ; Thu, 26 Jun 2025 09:36:49 +0300 (EEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20250626063647euoutp0147d46f247016883d4001b02f1e378dc1~MhEnEwUFV0948709487euoutp01C for ; Thu, 26 Jun 2025 06:36:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20250626063647euoutp0147d46f247016883d4001b02f1e378dc1~MhEnEwUFV0948709487euoutp01C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1750919807; bh=8ThgZkZjrVXHikj0KXrPjLXzxOXIRUU4a1/QE9J9mwY=; h=From:To:Cc:Subject:Date:References:From; b=rZpQT9aBnt4GsQjPp9c3xINxBOD9rzO1nX0tQR2ygVAJ746WTQuH4knxEQ/kIrLOj jQbYPUSUNZRB0JiXM/5TcX4XK+26nvWAZONrGLEF6rYz9R9aLOzPOApm1+WUyLqJLc qyIxwF1OdY2TPigNiLFuWxOogJiy/pV2paYPAd8Q= Received: from eusmtip2.samsung.com (unknown [203.254.199.222]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20250626063647eucas1p2a61a42d32d8f9ed51c9151ec58f7d81c~MhEmr2TeW2220122201eucas1p2t; Thu, 26 Jun 2025 06:36:47 +0000 (GMT) Received: from AMDC5021.local (unknown [106.120.41.33]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250626063646eusmtip2455bc39b93f9bac1285e00967e9161e4~MhEmi1Rgs0508805088eusmtip2F; Thu, 26 Jun 2025 06:36:46 +0000 (GMT) From: Dawid Kozinski To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Jun 2025 08:36:43 +0200 Message-Id: <20250626063643.3770197-1-d.kozinski@samsung.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-CMS-MailID: 20250626063647eucas1p2a61a42d32d8f9ed51c9151ec58f7d81c X-Msg-Generator: CA X-RootMTR: 20250626063647eucas1p2a61a42d32d8f9ed51c9151ec58f7d81c X-EPHeader: CA X-CMS-RootMailID: 20250626063647eucas1p2a61a42d32d8f9ed51c9151ec58f7d81c References: Subject: [FFmpeg-devel] [PATCH v1] avformat/apvdec: framerate option added to the APV demuxer 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 Cc: Dawid Kozinski 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: Signed-off-by: Dawid Kozinski --- libavformat/apvdec.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/libavformat/apvdec.c b/libavformat/apvdec.c index 1e5497bcd3..420c7196fd 100644 --- a/libavformat/apvdec.c +++ b/libavformat/apvdec.c @@ -18,12 +18,17 @@ #include "libavcodec/apv.h" #include "libavcodec/bytestream.h" +#include "libavutil/opt.h" #include "avformat.h" #include "avio_internal.h" #include "demux.h" #include "internal.h" +typedef struct APVDemuxContext { + const AVClass *class; + AVRational framerate; +} APVDemuxContext; typedef struct APVHeaderInfo { uint8_t pbu_type; @@ -150,6 +155,7 @@ static int apv_read_header(AVFormatContext *s) uint8_t buffer[12]; uint32_t au_size, signature, pbu_size; int err, size; + APVDemuxContext *const c = s->priv_data; err = ffio_ensure_seekback(s->pb, sizeof(buffer)); if (err < 0) @@ -184,8 +190,8 @@ static int apv_read_header(AVFormatContext *s) st->codecpar->codec_id = AV_CODEC_ID_APV; ffstream(st)->need_parsing = AVSTREAM_PARSE_HEADERS; - st->avg_frame_rate = (AVRational){ 30, 1 }; - avpriv_set_pts_info(st, 64, 1, 30); + st->avg_frame_rate = c->framerate; + avpriv_set_pts_info(st, 64, 1, 25); avio_seek(s->pb, -size, SEEK_CUR); @@ -220,12 +226,28 @@ static int apv_read_packet(AVFormatContext *s, AVPacket *pkt) return 0; } +#define DEC AV_OPT_FLAG_DECODING_PARAM +#define OFFSET(x) offsetof(APVDemuxContext, x) +static const AVOption apv_options[] = { + { "framerate", "", OFFSET(framerate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, DEC}, + { NULL }, +}; +#undef OFFSET + +static const AVClass apv_demuxer_class = { + .class_name = "APV demuxer", + .item_name = av_default_item_name, + .option = apv_options, + .version = LIBAVUTIL_VERSION_INT, +}; const FFInputFormat ff_apv_demuxer = { .p.name = "apv", .p.long_name = NULL_IF_CONFIG_SMALL("APV raw bitstream"), .p.extensions = "apv", .p.flags = AVFMT_GENERIC_INDEX | AVFMT_NOTIMESTAMPS, + .p.priv_class = &apv_demuxer_class, + .priv_data_size = sizeof(APVDemuxContext), .read_probe = apv_probe, .read_header = apv_read_header, .read_packet = apv_read_packet, -- 2.34.1 _______________________________________________ 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".