From patchwork Sat Jan 25 02:01:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17528 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 F0AAB44BC55 for ; Sat, 25 Jan 2020 04:02:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CDE2D68B087; Sat, 25 Jan 2020 04:02:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f53.google.com (mail-yw1-f53.google.com [209.85.161.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2BFBC68AECA for ; Sat, 25 Jan 2020 04:02:36 +0200 (EET) Received: by mail-yw1-f53.google.com with SMTP id i190so1859378ywc.2 for ; Fri, 24 Jan 2020 18:02:35 -0800 (PST) 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=414iURwzKa7vmAq2royyVDS5AtmhiHUGV8ja30PkxBM=; b=EvBQwBPGvoXEWkEhwZw/WKplFz2+rQmZGMreJiIUpRugTL52Z8THUM+nR+EOXaFNxl SL0jvWN4Ozvap0Nvy6XMUaJrWjJ/GW4aUhu8Ov4u+m5EJz5xtxDfomkSXfQnUOFfKtK5 Rwopl1tO6Gln5k7ySUyrTTtpf5oud24ZBjcECW3U4WpTJXMM3lknGj5o4BkOs1Ltb2F2 Q7scivm659NUrqaXO1PGU96lzp/ekj694SqxlDXHI/VqBToBwJOuyzjukgvneTe3RXeg mT0YshG4WCEI7dS1Z/zAKMH6vQEy93J6oHK/iWD932T0PLMXi2FJ44cs4ffKUMx0CnCT yofA== X-Gm-Message-State: APjAAAUc+LH59+Z987WatjX9q5KcXF+Xsdea8BhU7j0j2q8P99S2jKL5 YL39RbA25/v3OhINlkWeA3Gs3BfhOgw= X-Google-Smtp-Source: APXvYqw1UVOPjr36qnYCh3f/Q/2jXgTdOjxNvsScpJhCD6LMaJaI3dctvv99/BYDfa7kIoPzbMLinA== X-Received: by 2002:a81:d549:: with SMTP id l9mr4590365ywj.417.1579917753898; Fri, 24 Jan 2020 18:02:33 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:32 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:48 -0600 Message-Id: <20200125020200.2049-1-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/13] lavc/ass: realign ff_ass_subtitle_header_default 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" --- libavcodec/ass.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/ass.c b/libavcodec/ass.c index b4f081c819..da05a83d69 100644 --- a/libavcodec/ass.c +++ b/libavcodec/ass.c @@ -80,14 +80,14 @@ int ff_ass_subtitle_header(AVCodecContext *avctx, int ff_ass_subtitle_header_default(AVCodecContext *avctx) { return ff_ass_subtitle_header(avctx, ASS_DEFAULT_FONT, - ASS_DEFAULT_FONT_SIZE, - ASS_DEFAULT_COLOR, - ASS_DEFAULT_BACK_COLOR, - ASS_DEFAULT_BOLD, - ASS_DEFAULT_ITALIC, - ASS_DEFAULT_UNDERLINE, - ASS_DEFAULT_BORDERSTYLE, - ASS_DEFAULT_ALIGNMENT); + ASS_DEFAULT_FONT_SIZE, + ASS_DEFAULT_COLOR, + ASS_DEFAULT_BACK_COLOR, + ASS_DEFAULT_BOLD, + ASS_DEFAULT_ITALIC, + ASS_DEFAULT_UNDERLINE, + ASS_DEFAULT_BORDERSTYLE, + ASS_DEFAULT_ALIGNMENT); } char *ff_ass_get_dialog(int readorder, int layer, const char *style, From patchwork Sat Jan 25 02:01:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17529 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 D4DD044BC55 for ; Sat, 25 Jan 2020 04:02:44 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B332368B0FC; Sat, 25 Jan 2020 04:02:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f46.google.com (mail-yw1-f46.google.com [209.85.161.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0B06468AECA for ; Sat, 25 Jan 2020 04:02:37 +0200 (EET) Received: by mail-yw1-f46.google.com with SMTP id n184so1858952ywc.3 for ; Fri, 24 Jan 2020 18:02:36 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=toIx6thYwb7QtnkslPSo4gDSFsZ0XmleszzrmEjnoWg=; b=obORyImEOv/6mXHEGbyZsXfod9qan9EmsJi+0GODZU1EMKw+WsXkP9bdGpT+RfM7rH OXZWszaymu186Qp5er0CdviYtRu4xbQfMm5z44nhU2MVRllzAziofPOJIlnDhZbhLbQN Ni1IY+wu3HBTifEjle1FrPYA8P0Nhl/jVTLdojKnJOT+UKENdEpI/CTT6/rJuGa/kLF5 FSJP9VbPm1BKOwXEOumYXtu++nd/X6K1nhxdXSTfDnV+ODUwq6QMdFYDRgPpRS64JwBb sYYNgJhqG5YZxwQGgw9hiZDp+AirqQv0ly9deAbSOFcTSjVC1MqdlLKywghONB+EY/OI SUlQ== X-Gm-Message-State: APjAAAWM6KlerizIgrdmCvSbXts27RoA7eTHshs5/0ZXVePeEyrEHtDT 3BDwHt+Y11oeIP2Kz6SThYWUqXAkpV8= X-Google-Smtp-Source: APXvYqwi+lOi79FeuWJvaj3vrdFqNbjzER1esushPgX0eGZvTjILBdIFst5eBjJ4w4mM1mvzGl8t3w== X-Received: by 2002:a81:a7c9:: with SMTP id e192mr4802928ywh.421.1579917755249; Fri, 24 Jan 2020 18:02:35 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:34 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:49 -0600 Message-Id: <20200125020200.2049-2-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/13] lavc/ass: add support for configuring default style via AVOptions 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" --- libavcodec/ass.c | 154 ++++++++++++++++++++++++++++++++++------------- libavcodec/ass.h | 106 +++++++++++++++++++++++++++++++- 2 files changed, 215 insertions(+), 45 deletions(-) diff --git a/libavcodec/ass.c b/libavcodec/ass.c index da05a83d69..65942a2567 100644 --- a/libavcodec/ass.c +++ b/libavcodec/ass.c @@ -24,57 +24,119 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" +#include "libavutil/bswap.h" #include "libavutil/common.h" +static int invert_ass_alpha(uint32_t c) +{ + uint32_t a = c >> 24; + return ((255 - a) << 24) | (c & 0xffffff); +} + +#define CL_FF2ASS(c) invert_ass_alpha(av_le2ne32(c)) +#define CL_ASS2FF(c) av_le2ne32(invert_ass_alpha(c)) + +int ff_ass_bprint_style(AVBPrint *buf, const FFASSStyle *style) +{ + av_bprintf(buf, + "Style: " + "%s," /* Name */ + "%s,%g," /* Font{name,size} */ + "&H%x,&H%x,&H%x,&H%x," /* {Primary,Secondary,Outline,Back}Colour */ + "%d,%d,%d,%d," /* Bold, Italic, Underline, StrikeOut */ + "%g,%g," /* Scale{X,Y} */ + "%g,%g," /* Spacing, Angle */ + "%d,%g,%g," /* BorderStyle, Outline, Shadow */ + "%d,%d,%d,%d," /* Alignment, Margin[LRV] */ + "0\r\n", /* Encoding */ + style->name ? style->name : "Default", + style->font ? style->font : ASS_DEFAULT_FONT, style->font_size, + CL_FF2ASS(style->color), CL_FF2ASS(style->color2), + CL_FF2ASS(style->outline_color), CL_FF2ASS(style->back_color), + style->bold, style->italic, style->underline, style->strikeout, + style->scale_x, style->scale_y, + style->spacing, style->angle, + style->border_style, style->outline, style->shadow, + style->alignment, style->margin_l, style->margin_r, style->margin_v); + + return 0; // Not currently possible to detect bprintf errors +} + +int ff_ass_subtitle_header2(AVCodecContext *avctx, int res_x, int res_y, const FFASSStyle *style) +{ + int ret = 0; + AVBPrint buf; + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC); + av_bprintf(&buf, + "[Script Info]\r\n" + "; Script generated by FFmpeg/Lavc%s\r\n" + "ScriptType: v4.00+\r\n" + "PlayResX: %d\r\n" + "PlayResY: %d\r\n" + "\r\n" + "[V4+ Styles]\r\n" + + /* ASSv4+ header */ + "Format: Name, " + "Fontname, Fontsize, " + "PrimaryColour, SecondaryColour, OutlineColour, BackColour, " + "Bold, Italic, Underline, StrikeOut, " + "ScaleX, ScaleY, " + "Spacing, Angle, " + "BorderStyle, Outline, Shadow, " + "Alignment, MarginL, MarginR, MarginV, " + "Encoding\r\n", + !(avctx->flags & AV_CODEC_FLAG_BITEXACT) ? AV_STRINGIFY(LIBAVCODEC_VERSION) : "", + res_x, res_y); + + if ((ret = ff_ass_bprint_style(&buf, style) < 0)) + goto fail; + + av_bprintf(&buf, + "\r\n" + "[Events]\r\n" + "Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n"); + + if ((ret = av_bprint_finalize(&buf, (char**)&avctx->subtitle_header)) < 0) + return ret; + + avctx->subtitle_header_size = buf.len; + return 0; + +fail: + av_bprint_finalize(&buf, NULL); + return ret; +} + +int ff_ass_subtitle_header_from_opts(AVCodecContext *avctx, const FFASSHeaderOptions *opts) +{ + return ff_ass_subtitle_header2(avctx, opts->res_x, opts->res_y, &opts->style); +} + int ff_ass_subtitle_header(AVCodecContext *avctx, const char *font, int font_size, int color, int back_color, int bold, int italic, int underline, int border_style, int alignment) { - avctx->subtitle_header = av_asprintf( - "[Script Info]\r\n" - "; Script generated by FFmpeg/Lavc%s\r\n" - "ScriptType: v4.00+\r\n" - "PlayResX: %d\r\n" - "PlayResY: %d\r\n" - "\r\n" - "[V4+ Styles]\r\n" - - /* ASSv4 header */ - "Format: Name, " - "Fontname, Fontsize, " - "PrimaryColour, SecondaryColour, OutlineColour, BackColour, " - "Bold, Italic, Underline, StrikeOut, " - "ScaleX, ScaleY, " - "Spacing, Angle, " - "BorderStyle, Outline, Shadow, " - "Alignment, MarginL, MarginR, MarginV, " - "Encoding\r\n" - - "Style: " - "Default," /* Name */ - "%s,%d," /* Font{name,size} */ - "&H%x,&H%x,&H%x,&H%x," /* {Primary,Secondary,Outline,Back}Colour */ - "%d,%d,%d,0," /* Bold, Italic, Underline, StrikeOut */ - "100,100," /* Scale{X,Y} */ - "0,0," /* Spacing, Angle */ - "%d,1,0," /* BorderStyle, Outline, Shadow */ - "%d,10,10,10," /* Alignment, Margin[LRV] */ - "0\r\n" /* Encoding */ - - "\r\n" - "[Events]\r\n" - "Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n", - !(avctx->flags & AV_CODEC_FLAG_BITEXACT) ? AV_STRINGIFY(LIBAVCODEC_VERSION) : "", - ASS_DEFAULT_PLAYRESX, ASS_DEFAULT_PLAYRESY, - font, font_size, color, color, back_color, back_color, - -bold, -italic, -underline, border_style, alignment); - - if (!avctx->subtitle_header) - return AVERROR(ENOMEM); - avctx->subtitle_header_size = strlen(avctx->subtitle_header); - return 0; + return ff_ass_subtitle_header2(avctx, ASS_DEFAULT_PLAYRESX, ASS_DEFAULT_PLAYRESY, + &(FFASSStyle){ + .name = "Default", + .font = font, .font_size = font_size, + .color = CL_ASS2FF(color), .color2 = CL_ASS2FF(color), + .outline_color = CL_ASS2FF(back_color), .back_color = CL_ASS2FF(back_color), + .bold = bold, .italic = italic, + .underline = underline, .strikeout = 0, + .scale_x = 100, .scale_y = 100, + .spacing = 0, .angle = 0, + .border_style = border_style, + .outline = ASS_DEFAULT_OUTLINE, + .shadow = ASS_DEFAULT_SHADOW, + .alignment = alignment, + .margin_l = ASS_DEFAULT_MARGINL, + .margin_r = ASS_DEFAULT_MARGINR, + .margin_v = ASS_DEFAULT_MARGINV, + }); } int ff_ass_subtitle_header_default(AVCodecContext *avctx) @@ -90,6 +152,12 @@ int ff_ass_subtitle_header_default(AVCodecContext *avctx) ASS_DEFAULT_ALIGNMENT); } +int ff_ass_subtitle_header_options(AVCodecContext *avctx) +{ + FFASSDecoderContext *s = avctx->priv_data; + return ff_ass_subtitle_header_from_opts(avctx, &s->common); +} + char *ff_ass_get_dialog(int readorder, int layer, const char *style, const char *speaker, const char *text) { diff --git a/libavcodec/ass.h b/libavcodec/ass.h index 314b43b686..454e5663ed 100644 --- a/libavcodec/ass.h +++ b/libavcodec/ass.h @@ -24,9 +24,11 @@ #include "avcodec.h" #include "libavutil/bprint.h" +#include "libavutil/opt.h" #define ASS_DEFAULT_PLAYRESX 384 #define ASS_DEFAULT_PLAYRESY 288 +#define ASS_DEFAULT_PLAYRES_STR "384x288" /** * @name Default values for ASS style @@ -35,29 +37,120 @@ #define ASS_DEFAULT_FONT "Arial" #define ASS_DEFAULT_FONT_SIZE 16 #define ASS_DEFAULT_COLOR 0xffffff +#define ASS_DEFAULT_COLOR_STR "#ffffff" #define ASS_DEFAULT_BACK_COLOR 0 +#define ASS_DEFAULT_BCOLOR_STR "#000000" #define ASS_DEFAULT_BOLD 0 #define ASS_DEFAULT_ITALIC 0 #define ASS_DEFAULT_UNDERLINE 0 -#define ASS_DEFAULT_ALIGNMENT 2 +#define ASS_DEFAULT_STRIKEOUT 0 +#define ASS_DEFAULT_SCALE_X 100. +#define ASS_DEFAULT_SCALE_Y 100. #define ASS_DEFAULT_BORDERSTYLE 1 +#define ASS_DEFAULT_OUTLINE 1 +#define ASS_DEFAULT_SHADOW 0 +#define ASS_DEFAULT_ALIGNMENT 2 +#define ASS_DEFAULT_MARGINL 10 +#define ASS_DEFAULT_MARGINR 10 +#define ASS_DEFAULT_MARGINV 10 /** @} */ +typedef struct FFASSStyle { + const char *name; + const char *font; double font_size; + uint32_t color, color2, outline_color, back_color; // Big-endian RGBA + int bold, italic, underline, strikeout; + double scale_x, scale_y; + double spacing, angle; + int border_style; + double outline, shadow; + int alignment; + int margin_l, margin_r, margin_v; +} FFASSStyle; + +typedef struct FFASSHeaderOptions { + int res_x, res_y; + FFASSStyle style; +} FFASSHeaderOptions; + +#define ASS_DS AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_SUBTITLE_PARAM + +#define ASS_HEADER_AVOPTIONS(cls, obj) \ + { "res", "script resolution", offsetof(cls, obj.res_x), AV_OPT_TYPE_IMAGE_SIZE, { .str = ASS_DEFAULT_PLAYRES_STR }, 1, INT_MAX, ASS_DS }, \ + { "font", "default font name", offsetof(cls, obj.style.font), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, ASS_DS }, \ + { "font_size", "default font name", offsetof(cls, obj.style.font_size), AV_OPT_TYPE_DOUBLE, { .dbl = ASS_DEFAULT_FONT_SIZE }, 0, INT_MAX, ASS_DS }, \ + { "color", "default text color", offsetof(cls, obj.style.color), AV_OPT_TYPE_COLOR, { .str = ASS_DEFAULT_COLOR_STR }, 0, 0, ASS_DS }, \ + { "color2", "default secondary text color", offsetof(cls, obj.style.color2), AV_OPT_TYPE_COLOR, { .str = ASS_DEFAULT_COLOR_STR }, 0, 0, ASS_DS }, \ + { "outline_color", "default text outline color", offsetof(cls, obj.style.outline_color), AV_OPT_TYPE_COLOR, { .str = ASS_DEFAULT_BCOLOR_STR }, 0, 0, ASS_DS }, \ + { "back_color", "default text background/shadow color", offsetof(cls, obj.style.back_color), AV_OPT_TYPE_COLOR, { .str = ASS_DEFAULT_BCOLOR_STR }, 0, 0, ASS_DS }, \ + { "bold", "default text boldness (0/1/weight value)", offsetof(cls, obj.style.bold), AV_OPT_TYPE_INT, { .i64 = ASS_DEFAULT_BOLD }, 0, INT_MAX, ASS_DS }, \ + { "italic", "default text italics", offsetof(cls, obj.style.bold), AV_OPT_TYPE_BOOL, { .i64 = ASS_DEFAULT_ITALIC }, 0, 1, ASS_DS }, \ + { "underline", "default text italics", offsetof(cls, obj.style.underline), AV_OPT_TYPE_BOOL, { .i64 = ASS_DEFAULT_UNDERLINE }, 0, 1, ASS_DS }, \ + { "strikeout", "default text strikeout", offsetof(cls, obj.style.strikeout), AV_OPT_TYPE_BOOL, { .i64 = ASS_DEFAULT_STRIKEOUT }, 0, 1, ASS_DS }, \ + { "scale_x", "default horizontal text scale", offsetof(cls, obj.style.scale_x), AV_OPT_TYPE_DOUBLE, { .dbl = ASS_DEFAULT_SCALE_X }, 0, INT_MAX, ASS_DS }, \ + { "scale_y", "default vertical text scale", offsetof(cls, obj.style.scale_y), AV_OPT_TYPE_DOUBLE, { .dbl = ASS_DEFAULT_SCALE_Y }, 0, INT_MAX, ASS_DS }, \ + { "border_style", "default text border style", offsetof(cls, obj.style.border_style), AV_OPT_TYPE_INT, { .i64 = ASS_DEFAULT_BORDERSTYLE }, 1, 4, ASS_DS }, \ + { "outline", "default text outline width", offsetof(cls, obj.style.outline), AV_OPT_TYPE_DOUBLE, { .dbl = ASS_DEFAULT_OUTLINE }, 0, INT_MAX, ASS_DS }, \ + { "shadow", "default text shadow drop", offsetof(cls, obj.style.shadow), AV_OPT_TYPE_DOUBLE, { .dbl = ASS_DEFAULT_SHADOW }, 0, INT_MAX, ASS_DS }, \ + { "alignment", "default text alignment", offsetof(cls, obj.style.alignment), AV_OPT_TYPE_INT, { .i64 = ASS_DEFAULT_ALIGNMENT }, 1, 9, ASS_DS }, \ + { "margin_l", "default left margin", offsetof(cls, obj.style.margin_l), AV_OPT_TYPE_INT, { .i64 = ASS_DEFAULT_MARGINL }, 0, INT_MAX, ASS_DS }, \ + { "margin_r", "default right margin", offsetof(cls, obj.style.margin_r), AV_OPT_TYPE_INT, { .i64 = ASS_DEFAULT_MARGINR }, 0, INT_MAX, ASS_DS }, \ + { "margin_v", "default vertical margin", offsetof(cls, obj.style.margin_v), AV_OPT_TYPE_INT, { .i64 = ASS_DEFAULT_MARGINV }, 0, INT_MAX, ASS_DS }, \ + +#define ASS_GENERIC_OPTIONS(name) \ +static const AVOption name##_options[] = { \ + ASS_HEADER_AVOPTIONS(FFASSDecoderContext, common) \ + { NULL }, \ +}; + typedef struct FFASSDecoderContext { + AVClass *class; int readorder; + FFASSHeaderOptions common; } FFASSDecoderContext; +#define ASS_GENERIC_CLASS(name, StringName) \ +ASS_GENERIC_OPTIONS(name) \ +\ +static const AVClass name##_decoder_class = { \ + .class_name = #StringName " subtitle decoder", \ + .item_name = av_default_item_name, \ + .option = name##_options, \ + .version = LIBAVUTIL_VERSION_INT, \ +}; + + +/** + * Convert an FFASSStyle to ASS text + */ +int ff_ass_bprint_style(AVBPrint *buf, const FFASSStyle *style); + /** * Generate a suitable AVCodecContext.subtitle_header for SUBTITLE_ASS. * * @param avctx pointer to the AVCodecContext + * @param res_x horizontal script resolution + * @param res_y vertical script resolution + * @param style the default style to use + * @return >= 0 on success otherwise an error code <0 + */ +int ff_ass_subtitle_header2(AVCodecContext *avctx, + int res_x, int res_y, + const FFASSStyle *style); + +int ff_ass_subtitle_header_from_opts(AVCodecContext *avctx, const FFASSHeaderOptions *opts); + +/** + * Simple form of ff_ass_subtitle_header2 + * + * @param avctx pointer to the AVCodecContext * @param font name of the default font face to use * @param font_size default font size to use * @param color default text color to use (ABGR) * @param back_color default background color to use (ABGR) * @param bold 1 for bold text, 0 for normal text * @param italic 1 for italic text, 0 for normal text - * @param underline 1 for underline text, 0 for normal text + * @param underline 1 for underlined text, 0 for normal text * @param alignment position of the text (left, center, top...), defined after * the layout of the numpad (1-3 sub, 4-6 mid, 7-9 top) * @return >= 0 on success otherwise an error code <0 @@ -77,6 +170,15 @@ int ff_ass_subtitle_header(AVCodecContext *avctx, */ int ff_ass_subtitle_header_default(AVCodecContext *avctx); +/** + * Generate a suitable AVCodecContext.subtitle_header for SUBTITLE_ASS + * with style configured by FFASSDecoderContext AVOptions. + * + * @param avctx pointer to the AVCodecContext + * @return >= 0 on success otherwise an error code <0 + */ +int ff_ass_subtitle_header_options(AVCodecContext *avctx); + /** * Craft an ASS dialog string. */ From patchwork Sat Jan 25 02:01:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17530 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 B850244BC55 for ; Sat, 25 Jan 2020 04:02:45 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E73968B123; Sat, 25 Jan 2020 04:02:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f54.google.com (mail-yw1-f54.google.com [209.85.161.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 39E7568B0E6 for ; Sat, 25 Jan 2020 04:02:38 +0200 (EET) Received: by mail-yw1-f54.google.com with SMTP id l14so1837850ywj.9 for ; Fri, 24 Jan 2020 18:02:38 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=/CPXJMeyXUT/EFMWkILocYbRY/NNbXBX8Z0+miebEiw=; b=DDJP8UEq5H9WV40RyhtCiSVKqlgo1uNrlSerP2bkJSgONdcS/QecH/dxHw8LJoaQZY jode8t6ZtrWnliuJ3Xvl0zgLOneg+I8VdLBNocv9hKG4Kh/W5Jtgt840toswSUbEnFct RzmWBcDN2jDXOeDEtSDckf4AAEttTsuVxGTskyffJ38lRig8o3cBBKcahNJ3dZkk1xXD bf+ZEt9uFgv7LWZEmsbOdvOZxocQlPMnh1WaQuGsTSNhHalTvObrP2YttVuHsEuk/75t nuHgdewc9TeWjGuy5EYucUwdhV3k2fWnV8+OT+7OOJEf3QUwXRJhZC2IhcjmUp4z1bvz jySA== X-Gm-Message-State: APjAAAWk/vVgIzQ3l4HrpaKRXRtEGszFkhw0+3Fq10/uuFmxkKTSnXWP TVdm/ljtpx4c4bUd+04k5VoEosRUve8= X-Google-Smtp-Source: APXvYqxy5hUoJFwDDyq12yNLnPFMWIitvZBQufkB4nd9yBjCrq7jtEM01sKEZl+6T4lxdOAmNDov8Q== X-Received: by 2002:a81:a985:: with SMTP id g127mr4536953ywh.470.1579917756572; Fri, 24 Jan 2020 18:02:36 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:35 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:50 -0600 Message-Id: <20200125020200.2049-3-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/13] lavc/srtdec: add support for configuring default style via AVOptions 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" --- libavcodec/srtdec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/srtdec.c b/libavcodec/srtdec.c index ecc0801595..8d3b3cfc9e 100644 --- a/libavcodec/srtdec.c +++ b/libavcodec/srtdec.c @@ -85,6 +85,8 @@ static int srt_decode_frame(AVCodecContext *avctx, return avpkt->size; } +ASS_GENERIC_CLASS(srt, SubRip) + #if CONFIG_SRT_DECODER /* deprecated decoder */ AVCodec ff_srt_decoder = { @@ -96,18 +98,22 @@ AVCodec ff_srt_decoder = { .decode = srt_decode_frame, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &srt_decoder_class, }; #endif +ASS_GENERIC_CLASS(subrip, SubRip) + #if CONFIG_SUBRIP_DECODER AVCodec ff_subrip_decoder = { .name = "subrip", .long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_SUBRIP, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .decode = srt_decode_frame, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &subrip_decoder_class, }; #endif From patchwork Sat Jan 25 02:01:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17531 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 EEF5044BC55 for ; Sat, 25 Jan 2020 04:02:48 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D79E568B149; Sat, 25 Jan 2020 04:02:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f51.google.com (mail-yw1-f51.google.com [209.85.161.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD59368B0EE for ; Sat, 25 Jan 2020 04:02:39 +0200 (EET) Received: by mail-yw1-f51.google.com with SMTP id u139so1828056ywf.13 for ; Fri, 24 Jan 2020 18:02:39 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=+UZIap9mHVVXsufbKojgnEVAtVVyONfpBtw0OGe0Elg=; b=ui476R/ikzWlzBXxsi9emo4uExhtodZ1Vv0s9ipLswJ9jEaaSNh77vJQPPyOegVb+X 7MP4uExY1KwiT3xjnSgimEUL/emZqT7sT7sJgYThosG4G472PzG7OeixjHtGamO56NQn JgG3mh+d1Nd6dTWPqOZWokIorvtGmDsKYq9IEThkaHgfaizTbKB3ZSXUzn9peNrQYaYE I74ZkhBwNkN5LZ8CYeeOv9tkZwV3GX4/Qvq0+mTq1aQMtENUoByGUjuCr0p/Kn2xAehm bIl4mCY4Gpj9AMJfArTAhRSknzhEeRLccj894tCSw5brPRYoyIrw7kExIxsoKT5tQjU9 /Fbg== X-Gm-Message-State: APjAAAV3XAtBqSu7ytjcVudsl987Abe1yCe06NToY/TPtfIQV9q7/x3l 11Ex1tw1PaWtqGIntRjebjAeWgIko9Q= X-Google-Smtp-Source: APXvYqws6MT7p2BhIDW1dwjPW/F/AfsmAEjyDaZKsAvZU3hnEdChE8zHAgNQKQLcQwmLvO/xtfUbAw== X-Received: by 2002:a0d:e081:: with SMTP id j123mr4269568ywe.452.1579917758125; Fri, 24 Jan 2020 18:02:38 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:37 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:51 -0600 Message-Id: <20200125020200.2049-4-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/13] lavc/webvttdec: add support for configuring default style via AVOptions 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" --- libavcodec/webvttdec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c index 7b2d1750de..494de08884 100644 --- a/libavcodec/webvttdec.c +++ b/libavcodec/webvttdec.c @@ -98,13 +98,16 @@ static int webvtt_decode_frame(AVCodecContext *avctx, return avpkt->size; } +ASS_GENERIC_CLASS(webvtt, WebVTT) + AVCodec ff_webvtt_decoder = { .name = "webvtt", .long_name = NULL_IF_CONFIG_SMALL("WebVTT subtitle"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_WEBVTT, .decode = webvtt_decode_frame, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &webvtt_decoder_class, }; From patchwork Sat Jan 25 02:01:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17538 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 DEE8B4475A6 for ; Sat, 25 Jan 2020 04:09:22 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C705D68B0D8; Sat, 25 Jan 2020 04:09:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f196.google.com (mail-yb1-f196.google.com [209.85.219.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63BCA687FC2 for ; Sat, 25 Jan 2020 04:09:16 +0200 (EET) Received: by mail-yb1-f196.google.com with SMTP id w17so1977114ybm.1 for ; Fri, 24 Jan 2020 18:09:16 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Sv12fASiskEH0AbfxU073UfTZJlcvpqMBNMpdCKzgJ0=; b=biQ/mhkjgQZocvfPinhMS8Z6ujhSvqIqGXJzzhRP+WZZlKkeMcA4UKqsJ3AnNjiHkC Fvwf4Jq7/Z8k9XgnA+QK4a8SV3gldTkjiSN8j03mqqIm2gUSJYsxTb+u25/InaafG7A5 /EikEaMWO2i1g4ltB0h+jjI3DPYOK5+Dz/Va26Rfk8IuvxHvWvIlLyCQ7vuJDggTRcqA c74LEZAREn8YbsqDQ9mtey05cS8kCboLSlRIm4gM6E2izRrGYOXeWwQF+agntbz0NBbX 6DQUCrHUtChFX6fhUMSQ4XeIX6eeZywmicHTh+2tvhR6pFu6SM7PBZcTHM5sUWgZEsjK qcMA== X-Gm-Message-State: APjAAAXDnwBEGJ6fZ6xiHdrboMn8HISqWJlJ5CJoKjr/44W8/yE1rthL PoQwFCRa5/H9Yq+w7VH7DL7q4ozxMJk= X-Google-Smtp-Source: APXvYqywhe2ImgIx2ZIlJpwZyBDeClyUHBWKdr3we2wCFts+i6CnwH5XoU+4ImQvrfreIfh05jeSSA== X-Received: by 2002:a0d:dd4a:: with SMTP id g71mr4386810ywe.248.1579917759650; Fri, 24 Jan 2020 18:02:39 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.38 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:39 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:52 -0600 Message-Id: <20200125020200.2049-5-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/13] lavc/realtextdec: add support for configuring default style via AVOptions 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" --- libavcodec/realtextdec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/realtextdec.c b/libavcodec/realtextdec.c index 5084781123..e888946f13 100644 --- a/libavcodec/realtextdec.c +++ b/libavcodec/realtextdec.c @@ -74,13 +74,16 @@ static int realtext_decode_frame(AVCodecContext *avctx, return avpkt->size; } +ASS_GENERIC_CLASS(realtext, RealText) + AVCodec ff_realtext_decoder = { .name = "realtext", .long_name = NULL_IF_CONFIG_SMALL("RealText subtitle"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_REALTEXT, .decode = realtext_decode_frame, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &realtext_decoder_class, }; From patchwork Sat Jan 25 02:01:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17532 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 D88FF44BC55 for ; Sat, 25 Jan 2020 04:02:49 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C718C68B152; Sat, 25 Jan 2020 04:02:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f173.google.com (mail-yb1-f173.google.com [209.85.219.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD49168AF7C for ; Sat, 25 Jan 2020 04:02:42 +0200 (EET) Received: by mail-yb1-f173.google.com with SMTP id z15so1942470ybm.8 for ; Fri, 24 Jan 2020 18:02:42 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=m5AhU5AewMeXc1a6xb0hoxj2QRQA/xhGGUOMJkKrddU=; b=NEWC7Jhrd3GT51MoWG3FXCOG68eelOVQ0lARXam4IwvjhvrbDN4g51eidBK6wke5C+ LoIGuyE/ndaNtceioAc677Qx6Tju9FC3aVQukQSRj28MLgze0GjJ0tu4k0z5aSsbkIqo j80YAIrYfvtOi4KIdoW1AF0Y/0nDsw6KlGcfyaYAX6sH3SSS6+zIChY/vFQuxogmD5pj TUyk8ajuxa1GboI4EecTNfgHJqAG8S8+lEz9ARRm3W978Hu1nKcmBJD1TYRJe5i+gvOy aXL3ey9OXA3THIpHj8feUn/B6W9z1hE1TdmwohePuGOFC00YS70C5hZvTomYexxPVfCg 8J+Q== X-Gm-Message-State: APjAAAVwopJ7NLouFj85CC3jmgLTXqxI8lLegT4NqAV32pt96ikZM1US QmJMRhNs2lpH4KIHxURAde7Gs0ezwQE= X-Google-Smtp-Source: APXvYqwhDoDwhTwIvzdKqjda+TovBf5kXSXM4xUvdJLjM1oUJ+pYZTf9BYXCLVJHCmS8vypIIBrb7w== X-Received: by 2002:a25:7306:: with SMTP id o6mr4807351ybc.79.1579917761049; Fri, 24 Jan 2020 18:02:41 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:40 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:53 -0600 Message-Id: <20200125020200.2049-6-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/13] lavc/jacosubdec: add support for configuring default style via AVOptions 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" --- libavcodec/jacosubdec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/jacosubdec.c b/libavcodec/jacosubdec.c index cdb372af58..b0d8327b35 100644 --- a/libavcodec/jacosubdec.c +++ b/libavcodec/jacosubdec.c @@ -193,13 +193,16 @@ end: return avpkt->size; } +ASS_GENERIC_CLASS(jacosub, JACOsub) + AVCodec ff_jacosub_decoder = { .name = "jacosub", .long_name = NULL_IF_CONFIG_SMALL("JACOsub subtitle"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_JACOSUB, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .decode = jacosub_decode_frame, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &jacosub_decoder_class, }; From patchwork Sat Jan 25 02:01:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17533 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 EE90544BC55 for ; Sat, 25 Jan 2020 04:02:51 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB0C768B1AE; Sat, 25 Jan 2020 04:02:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f171.google.com (mail-yb1-f171.google.com [209.85.219.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8BCF68B152 for ; Sat, 25 Jan 2020 04:02:43 +0200 (EET) Received: by mail-yb1-f171.google.com with SMTP id q190so1970580ybq.2 for ; Fri, 24 Jan 2020 18:02:43 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=SIOUnZVl0drolgXTfRmR50JiVJ1LzNMozq+UZADS/5k=; b=puQCytQecRQ9xkGALNp6HRRF8g3hnLVBctEMliGY0nCN5yNGqpvKcQH4CIyeFzTvbo asR0s0iHGnCdBt0skEPGa0ZW9N/fjCiQc3Fr+qCPMJOmxI5ROA4eU0EqABki/eS78WDA NAVtmRYuARhaoHkXoV6pkevm0K1Nq0Q/H2V+cq838OF+SvAkkim2Gyu64zzE0ISvewwv liwUG+64cqdLQOGvx+pe9CqfJZ6TO0WPIZD4haJKIqCcYBRevxyQxKioFRExi6qWmpDU BucVKQmGiWyl2zFQoARLcvd3z9kOKweD8iY3LCkrZPpTNOkacFDSiUut/2ybkUPkRB6P PGiA== X-Gm-Message-State: APjAAAU3iGuinsc5UkJg47Sh0NfdQhMdaMPkolv0LEGvE4loi7WDEoSC BASHcB2X+pOAgbkAlBASo6g8YCXh0J4= X-Google-Smtp-Source: APXvYqz7n8X1Hwur2WGIWzI1IO9xm7UlcjE2oiY8E6M38YfcwZnuf/0+zvzqlVrmrCb+8EsIsUtlHw== X-Received: by 2002:a25:ce4d:: with SMTP id x74mr4748057ybe.340.1579917762156; Fri, 24 Jan 2020 18:02:42 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.41 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:41 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:54 -0600 Message-Id: <20200125020200.2049-7-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/13] lavc/subviewerdec: add support for configuring default style via AVOptions 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" --- libavcodec/subviewerdec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/subviewerdec.c b/libavcodec/subviewerdec.c index 805c7dd547..7fbcf54d4c 100644 --- a/libavcodec/subviewerdec.c +++ b/libavcodec/subviewerdec.c @@ -65,13 +65,16 @@ static int subviewer_decode_frame(AVCodecContext *avctx, return avpkt->size; } +ASS_GENERIC_CLASS(subviewer, SubViewer) + AVCodec ff_subviewer_decoder = { .name = "subviewer", .long_name = NULL_IF_CONFIG_SMALL("SubViewer subtitle"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_SUBVIEWER, .decode = subviewer_decode_frame, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &subviewer_decoder_class, }; From patchwork Sat Jan 25 02:01:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17540 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 CE7FC447C63 for ; Sat, 25 Jan 2020 04:10:54 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B63036880C8; Sat, 25 Jan 2020 04:10:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f177.google.com (mail-yb1-f177.google.com [209.85.219.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C257E68809B for ; Sat, 25 Jan 2020 04:10:48 +0200 (EET) Received: by mail-yb1-f177.google.com with SMTP id n7so1959396ybm.5 for ; Fri, 24 Jan 2020 18:10:48 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=CLReXsPPQ+SJWNei8v8A3rw+7A/3yxPDPx3ZGu2BQGU=; b=LuaBShAbRus36nc6W28xUa5SgeDYjALWhJggLjZDlYit0vv7BU0fiHIf2eEeudtpi2 QKr8bQceTMVee4qXWuRZSHqYVbEXpUbkfXk3Cz8lYBU4c5DNJ5C1GLUo9N6ZLzQkv5mp nUyVb+0YukwOfpe07PXoGX+bEk1RJrH3jxwYaWajxWyHujhU2eZQBoVyuOtGVGoWYlXo TOfWA2nkVSI+eZlH0XLqUPxZd6RwDNGRaCeij+/v5uk8woe3GM+Mz1HiKBj5KV1tI0Nr urvVrcj9OxAsv78oUQlluYZehCYwuIMiApOMIEpI2Qy86+b8f8HmGauKaa522M9N+NAy 6IIQ== X-Gm-Message-State: APjAAAX0rnVYxLNjpCoZvsqwT8UI7Co3j6svvl22LcZ+zGGrg4W5ja3U IzSv8wIXwBVw9/DKpNflM+dBLqgN9pU= X-Google-Smtp-Source: APXvYqxYI3dBcELg1bb+ZCFRsuJ+0UkgF9C5Z8YlOB/7UxfW3YmH4udoVIgPJK/c0m3rXQOIi8a2CQ== X-Received: by 2002:a05:6902:4c8:: with SMTP id v8mr4851364ybs.451.1579917763371; Fri, 24 Jan 2020 18:02:43 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.42 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:42 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:55 -0600 Message-Id: <20200125020200.2049-8-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/13] lavc/samidec: add support for configuring default style via AVOptions 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" --- libavcodec/textdec.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/textdec.c b/libavcodec/textdec.c index 964da72ad5..72eb7c4795 100644 --- a/libavcodec/textdec.c +++ b/libavcodec/textdec.c @@ -30,15 +30,17 @@ typedef struct { AVClass *class; + int readorder; + FFASSHeaderOptions common; const char *linebreaks; int keep_ass_markup; - int readorder; } TextContext; #define OFFSET(x) offsetof(TextContext, x) #define SD AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_DECODING_PARAM static const AVOption options[] = { { "keep_ass_markup", "Set if ASS tags must be escaped", OFFSET(keep_ass_markup), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, .flags=SD }, + ASS_HEADER_AVOPTIONS(TextContext, common) { NULL } }; @@ -88,7 +90,7 @@ AVCodec ff_text_decoder = { .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_TEXT, .decode = text_decode_frame, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .priv_class = &text_decoder_class, .flush = text_flush, }; @@ -100,7 +102,7 @@ static int linebreak_init(AVCodecContext *avctx) { TextContext *text = avctx->priv_data; text->linebreaks = "|"; - return ff_ass_subtitle_header_default(avctx); + return ff_ass_subtitle_header_from_opts(avctx, &text->common); } #if CONFIG_VPLAYER_DECODER From patchwork Sat Jan 25 02:01:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17536 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 82CC144BC55 for ; Sat, 25 Jan 2020 04:02:54 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6D80F68B1B9; Sat, 25 Jan 2020 04:02:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f174.google.com (mail-yb1-f174.google.com [209.85.219.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1E62568B151 for ; Sat, 25 Jan 2020 04:02:46 +0200 (EET) Received: by mail-yb1-f174.google.com with SMTP id w9so1961891ybs.3 for ; Fri, 24 Jan 2020 18:02:46 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=3h5FPrqVo864QeDfVnIp4tzBU8TRug3BpG7GDK7qYCc=; b=q8e9jKdShKk45l8AjZd9T2G+xJu0gL403FOtBDPJVD2nz7HBvGi5Hl7ZWGksr0nK+a RBoVwGmK2tPfRG+uTo0vSSl+R3Iz5tuLS31DOy3M1U+rK15iqEvI919N5D/BwyZ1T0HT twpmrqpS65BECuBobaoainiMkSw+/gfTbvHTw5e9gvmfCQ0Lg6BluPYjn/cy+ZZnYD+d DQYfj1IZ9rFZbkwS7ot/k3E6op5PvUw358fv8FhPkwjqOMnEsbYskoolQJliiYYQ8ud+ faUPTAWNoE78UAtoWZIMe7pZSqa1mqfgv4AG4QyNK7VdPdiI7+4BbjQCiVfa5js163Uj sFxg== X-Gm-Message-State: APjAAAWwRLkc3RmRVPbgiFO9r5bfe9je/9pykz63mdhEoxEGlPfXrdzF U3kJ1kt2rDX9P8tyIND/jxj6Qge2RWc= X-Google-Smtp-Source: APXvYqw4xDSbKieNYNYDknrZ3VbZny7cxGWWg8cJcOc2HxUixg1Z7psV9mmaxZD27ituLmb26MK+fQ== X-Received: by 2002:a5b:5d2:: with SMTP id w18mr5127450ybp.349.1579917764491; Fri, 24 Jan 2020 18:02:44 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.43 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:43 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:56 -0600 Message-Id: <20200125020200.2049-9-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/13] lavc/mpl2dec: add support for configuring default style via AVOptions 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" --- libavcodec/mpl2dec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/mpl2dec.c b/libavcodec/mpl2dec.c index 409e4b3708..f426f3080b 100644 --- a/libavcodec/mpl2dec.c +++ b/libavcodec/mpl2dec.c @@ -81,13 +81,16 @@ static int mpl2_decode_frame(AVCodecContext *avctx, void *data, return avpkt->size; } +ASS_GENERIC_CLASS(mpl2, MPL2) + AVCodec ff_mpl2_decoder = { .name = "mpl2", .long_name = NULL_IF_CONFIG_SMALL("MPL2 subtitle"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_MPL2, .decode = mpl2_decode_frame, - .init = ff_ass_subtitle_header_default, + .init = ff_ass_subtitle_header_options, .flush = ff_ass_decoder_flush, .priv_data_size = sizeof(FFASSDecoderContext), + .priv_class = &mpl2_decoder_class, }; From patchwork Sat Jan 25 02:01:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17539 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 F16C8446CBF for ; Sat, 25 Jan 2020 04:10:45 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D696C6880D6; Sat, 25 Jan 2020 04:10:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E32AA68809B for ; Sat, 25 Jan 2020 04:10:39 +0200 (EET) Received: by mail-yb1-f178.google.com with SMTP id k15so1949286ybd.10 for ; Fri, 24 Jan 2020 18:10:39 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=WQL+/b8AizVdm4hG16WAsufJ+67/HaO6558oR247SBk=; b=kdD7aQjh3Itb4BggUCXDF66t8BBQUklWoMXlH/Hx+N/kzRhd1Qe0BGrcP57FxLbe5v bLLJCX5NMgE/bsk6/6n5pPC5jJ3H3Ds876rnNkOzVNXbJqSym4cmAXg5ko5pPwLSmFwG DEVS6pJ5+XjAGw2xEirqqfvEo+vsIrvHIwKOJZMs+624NmS/P0PCYu0eQ1AvlWL0V8b4 GYNbaTxTmsHosS/hzu34OrigMWNnu5T/Fak8Bi8lMwPLWoWn7fsIuMqyJ4NW2roXbZLi XZMLk9EoxbnmRcdqRJAWFfQtvzvrOONvmRqbPkqukgdJ7+3o/hLmRgsYRpH0Uy3KEJQv kKjg== X-Gm-Message-State: APjAAAU4k5lyKWRBDagiYMUoqdYCL0rSmwBBEP4VqB6gc3p2qfe2rO/D WynYXYWaZaf4BuAaqCuXhTF1j1+a48E= X-Google-Smtp-Source: APXvYqwyCc5mhVY6WD7z1WpwNufpmk3L6VugQF+gQn7gmGNzLemYXciAsA3YVf81+AuUdpqdzSWh/A== X-Received: by 2002:a81:4896:: with SMTP id v144mr4838065ywa.236.1579917765672; Fri, 24 Jan 2020 18:02:45 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.44 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:44 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:57 -0600 Message-Id: <20200125020200.2049-10-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/13] lavc/movtextdec: add support for configuring default style via AVOptions 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" --- libavcodec/movtextdec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c index c38c5edce6..0bb03fc141 100644 --- a/libavcodec/movtextdec.c +++ b/libavcodec/movtextdec.c @@ -86,6 +86,9 @@ typedef struct { } TextWrapBox; typedef struct { + AVClass *class; + int readorder; + FFASSHeaderOptions common; StyleBox **s; StyleBox *s_temp; HighlightBox h; @@ -99,7 +102,6 @@ typedef struct { uint64_t tracksize; int size_var; int count_s, count_f; - int readorder; } MovTextContext; typedef struct { @@ -453,7 +455,7 @@ static int mov_text_init(AVCodecContext *avctx) { m->d.underline, ASS_DEFAULT_BORDERSTYLE, m->d.alignment); } else - return ff_ass_subtitle_header_default(avctx); + return ff_ass_subtitle_header_from_opts(avctx, &m->common); } static int mov_text_decode_frame(AVCodecContext *avctx, @@ -567,6 +569,8 @@ static void mov_text_flush(AVCodecContext *avctx) m->readorder = 0; } +ASS_GENERIC_CLASS(mov_text, "3GPP Timed Text") + AVCodec ff_movtext_decoder = { .name = "mov_text", .long_name = NULL_IF_CONFIG_SMALL("3GPP Timed Text subtitle"), @@ -577,4 +581,5 @@ AVCodec ff_movtext_decoder = { .decode = mov_text_decode_frame, .close = mov_text_decode_close, .flush = mov_text_flush, + .priv_class = &mov_text_decoder_class, }; From patchwork Sat Jan 25 02:01:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17534 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 D242244BC55 for ; Sat, 25 Jan 2020 04:02:52 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BC9B068B1CB; Sat, 25 Jan 2020 04:02:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f44.google.com (mail-yw1-f44.google.com [209.85.161.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 42EF968B152 for ; Sat, 25 Jan 2020 04:02:48 +0200 (EET) Received: by mail-yw1-f44.google.com with SMTP id b186so1862707ywc.1 for ; Fri, 24 Jan 2020 18:02:48 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=o3hsVBFOYJ+2ruEiBm1z1bOQtgIK9y4VqGhRj1DqFcM=; b=IzKsGmCE9Dqjc5+LeJTgCqdkuNYMizbdH5IVWUzzFbBahvT9R4l2FFe5a59dUgrZy3 L8WCxYsOb7ayq2xJexFjjQWTOLnNGPrzLpnxHI9LJyLdtolW1nOwvXD2Qb6LQtId6oC0 IxZnaE0DHpaP06qMHlamx03sXZ72vocchH1I4sc1uzjNtedKV5cFo8uu9TrAgoi6i2ep YeHimwVZoZ3LshNPolgv/dK0SIC/gchFWE0FKkoL0gtgDW+U296JBilvhNEOlmuPf/be 8TIeaqyFfw5OzRYBkrzLB8t3En0oIzF2wTVhq1YEjpf7nDrMhE9SUmgQuXcocG8qGMWC fViw== X-Gm-Message-State: APjAAAXsOYcJx+0MkWKZqqQEOdrYA+1GdkZowZ1ysWbYi4zh/SBKEHeg WKhi3ORRJYkLeV9/7tdk2tM/voaime4= X-Google-Smtp-Source: APXvYqzQPckcKYHWzCn4R3xYmtzSzVKk14sClLjvPG8FqMt/pKv0sOpJD+D7w5QyD0qEbEolPghDaw== X-Received: by 2002:a0d:e84d:: with SMTP id r74mr4689712ywe.147.1579917766797; Fri, 24 Jan 2020 18:02:46 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:46 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:58 -0600 Message-Id: <20200125020200.2049-11-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/13] lavc/samidec: add support for configuring default style via AVOptions 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" --- libavcodec/samidec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/samidec.c b/libavcodec/samidec.c index e32f238c62..8804210700 100644 --- a/libavcodec/samidec.c +++ b/libavcodec/samidec.c @@ -30,12 +30,14 @@ #include "htmlsubtitles.h" typedef struct { + AVClass *class; + int readorder; + FFASSHeaderOptions common; AVBPrint source; AVBPrint content; AVBPrint encoded_source; AVBPrint encoded_content; AVBPrint full; - int readorder; } SAMIContext; static int sami_paragraph_to_ass(AVCodecContext *avctx, const char *src) @@ -159,7 +161,7 @@ static av_cold int sami_init(AVCodecContext *avctx) av_bprint_init(&sami->encoded_source, 0, 2048); av_bprint_init(&sami->encoded_content, 0, 2048); av_bprint_init(&sami->full, 0, 2048); - return ff_ass_subtitle_header_default(avctx); + return ff_ass_subtitle_header_from_opts(avctx, &sami->common); } static av_cold int sami_close(AVCodecContext *avctx) @@ -180,6 +182,8 @@ static void sami_flush(AVCodecContext *avctx) sami->readorder = 0; } +ASS_GENERIC_CLASS(sami, SAMI) + AVCodec ff_sami_decoder = { .name = "sami", .long_name = NULL_IF_CONFIG_SMALL("SAMI subtitle"), @@ -190,4 +194,5 @@ AVCodec ff_sami_decoder = { .close = sami_close, .decode = sami_decode_frame, .flush = sami_flush, + .priv_class = &sami_decoder_class, }; From patchwork Sat Jan 25 02:01:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17537 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 C64A344759B for ; Sat, 25 Jan 2020 04:08:28 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9F1F468B149; Sat, 25 Jan 2020 04:08:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f193.google.com (mail-yb1-f193.google.com [209.85.219.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6BC8868A60C for ; Sat, 25 Jan 2020 04:08:22 +0200 (EET) Received: by mail-yb1-f193.google.com with SMTP id o199so1962652ybc.4 for ; Fri, 24 Jan 2020 18:08:22 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=S/lpS60vAcahP7HwnyCmnSsj2H8E4PsAEr9qVvV9f6Q=; b=qH1DjQkWpAFBwsyq9cBQ506g7gUyks9sZWg60O8WTtPgEDfENkxB+ZWTYPQIGRK5aL UDMKuoWc6SUO/NFObBqB7ZGiEavM8PayaOvvjZ5mXx41Dg4qqDtIR0DjGsWL+xwiCMWd aH37cm3MG6r44hZ7CnGDvYJGAMZ59FuYx011P8axKmEnbXmnNRylrruiEGbKoTRJ4eJM +J6uj6SDhjBE4fudp8cWgXV4o/5W++il40bIwFmGH0jPX/0xbHyYkrP5EMlT1VbE5ZRX LLnVS6dHxjFRKJ1UJzLxVRXAH6IkJwwOzca6sUhz/wJM4C55UVso90r6hQYHXeysHxGV uZYA== X-Gm-Message-State: APjAAAVJ7NyBnQnG9VQgZnlWeBhNrWLkH/C3lKwQvVWtFxHDhX4R2jUp geIIbtDX3tyrV01VZjmEFsP2R1QJlqU= X-Google-Smtp-Source: APXvYqyt1r+/JT/Jok2mZlXFUn8NL4lqYFdDBYxw/7tM64Zfqga1k9sOv02OFxL3oFiXRpct74uzmw== X-Received: by 2002:a81:8603:: with SMTP id w3mr4379155ywf.316.1579917767989; Fri, 24 Jan 2020 18:02:47 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.46 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:47 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:01:59 -0600 Message-Id: <20200125020200.2049-12-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/13] lavc/libzvbi-teletextdec: add support for configuring default style via AVOptions 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" --- libavcodec/libzvbi-teletextdec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavcodec/libzvbi-teletextdec.c b/libavcodec/libzvbi-teletextdec.c index 3515f33924..018b350511 100644 --- a/libavcodec/libzvbi-teletextdec.c +++ b/libavcodec/libzvbi-teletextdec.c @@ -78,11 +78,14 @@ typedef struct TeletextContext int last_pgno; int last_p5; int last_ass_alignment; + + FFASSHeaderOptions common; } TeletextContext; static int my_ass_subtitle_header(AVCodecContext *avctx) { - int ret = ff_ass_subtitle_header_default(avctx); + TeletextContext *ctx = avctx->priv_data; + int ret = ff_ass_subtitle_header_from_opts(avctx, &ctx->common); char *new_header; uint8_t *event_pos; @@ -756,7 +759,7 @@ static int teletext_init_decoder(AVCodecContext *avctx) case 0: return 0; case 1: - return ff_ass_subtitle_header_default(avctx); + return ff_ass_subtitle_header_from_opts(avctx, &ctx->common); case 2: return my_ass_subtitle_header(avctx); } @@ -803,6 +806,7 @@ static const AVOption options[] = { {"txt_duration", "display duration of teletext pages in msecs", OFFSET(sub_duration), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 86400000, SD}, {"txt_transparent", "force transparent background of the teletext", OFFSET(transparent_bg), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, SD}, {"txt_opacity", "set opacity of the transparent background", OFFSET(opacity), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 255, SD}, + ASS_HEADER_AVOPTIONS(TeletextContext, common) { NULL }, }; From patchwork Sat Jan 25 02:02:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 17535 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 97FC044BC55 for ; Sat, 25 Jan 2020 04:02:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8302968B198; Sat, 25 Jan 2020 04:02:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f47.google.com (mail-yw1-f47.google.com [209.85.161.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E21E868B13A for ; Sat, 25 Jan 2020 04:02:50 +0200 (EET) Received: by mail-yw1-f47.google.com with SMTP id v126so1838132ywc.10 for ; Fri, 24 Jan 2020 18:02:50 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=IBHJIYHoL65vkykZ99pimoGEPVCwRMhcwiAtfMf6XlY=; b=T+/DDRXa+rdQd4GeC89AAjgAreJcX/mqfrmkJx8pVbQiYBwpYfjiRp62yr+7BFfiki Qz/QNqcfyoGHVIfG0gFOh0T83DiuMfWan9xC2eOFIIo6QuDLw/MPT6eR7u8RSdOyNiEp pN9CyDn16rDHEty2ywACC6/yp+rhwgBiipA4HlxGFgpQnq4OGpb1KwOVv7ojlHWSCcx0 kDKY+SsYVvuDlZs8b3na86eM1Lah+kXWLEqxSHSeJ9Pw7HsgGGIRvN8EVuuilxiAYh09 g73tMubOSmHamc91Z6WHIqtJUD5OZ4UhwRJkRtaQkv0AhUZ55ApwpTIyLqlgEcP+TxPW Hd2Q== X-Gm-Message-State: APjAAAWeKmm3GkKCVqWGvWm9fYX0uuHRcpovFeMxYFygx2MZZCXPoBy/ hwaxDOjtEqTDDjVPPH9yprl34XRH/Cg= X-Google-Smtp-Source: APXvYqylHUzwd1xvbKia2F50LJZskCMzMe1xVda/hTLpm2sVXeiYpASImSeLobLoy7aEobLOMlzC0w== X-Received: by 2002:a81:7012:: with SMTP id l18mr4321281ywc.223.1579917769116; Fri, 24 Jan 2020 18:02:49 -0800 (PST) Received: from MacBook-Pro.localdomain ([24.14.135.13]) by smtp.gmail.com with ESMTPSA id h184sm3181072ywa.70.2020.01.24.18.02.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jan 2020 18:02:48 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jan 2020 20:02:00 -0600 Message-Id: <20200125020200.2049-13-rcombs@rcombs.me> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200125020200.2049-1-rcombs@rcombs.me> References: <20200125020200.2049-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/13] lavc: bump micro version 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" --- libavcodec/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/version.h b/libavcodec/version.h index 195e21bfbe..d11beb7885 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 52 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \