X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fansi.c;h=0965f8cd56319b96ea596ce02051cfd7bc4916f0;hb=a247ac640df3da573cd661065bf53f37863e2b46;hp=f1fafab771bef656c572b21543ac232bb95407bb;hpb=9a88a47be4da9cd25a582feec7cc36790500b481;p=ffmpeg diff --git a/libavcodec/ansi.c b/libavcodec/ansi.c index f1fafab771b..0965f8cd563 100644 --- a/libavcodec/ansi.c +++ b/libavcodec/ansi.c @@ -34,6 +34,7 @@ #define ATTR_BOLD 0x01 /**< Bold/Bright-foreground (mode 1) */ #define ATTR_FAINT 0x02 /**< Faint (mode 2) */ +#define ATTR_ITALICS 0x04 /**< Italics (mode 3) */ #define ATTR_UNDERLINE 0x08 /**< Underline (mode 4) */ #define ATTR_BLINK 0x10 /**< Blink/Bright-background (mode 5) */ #define ATTR_REVERSE 0x40 /**< Reverse (mode 7) */ @@ -308,7 +309,7 @@ static int execute_code(AVCodecContext * avctx, int c) s->attributes = 0; s->fg = DEFAULT_FG_COLOR; s->bg = DEFAULT_BG_COLOR; - } else if (m == 1 || m == 2 || m == 4 || m == 5 || m == 7 || m == 8) { + } else if (m == 1 || m == 2 || m == 3 || m == 4 || m == 5 || m == 7 || m == 8) { s->attributes |= 1 << (m - 1); } else if (m >= 30 && m <= 37) { s->fg = ansi_to_cga[m - 30]; @@ -362,7 +363,7 @@ static int decode_frame(AVCodecContext *avctx, const uint8_t *buf_end = buf+buf_size; int ret, i, count; - if ((ret = ff_reget_buffer(avctx, s->frame)) < 0) + if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0) return ret; if (!avctx->frame_number) { for (i=0; iheight; i++) @@ -430,7 +431,8 @@ static int decode_frame(AVCodecContext *avctx, s->args[s->nb_args] = FFMAX(s->args[s->nb_args], 0) * 10 + buf[0] - '0'; break; case ';': - s->nb_args++; + if (s->nb_args < MAX_NB_ARGS) + s->nb_args++; if (s->nb_args < MAX_NB_ARGS) s->args[s->nb_args] = 0; break; @@ -473,7 +475,12 @@ static av_cold int decode_close(AVCodecContext *avctx) return 0; } -AVCodec ff_ansi_decoder = { +static const AVCodecDefault ansi_defaults[] = { + { "max_pixels", "640*480" }, + { NULL }, +}; + +const AVCodec ff_ansi_decoder = { .name = "ansi", .long_name = NULL_IF_CONFIG_SMALL("ASCII/ANSI art"), .type = AVMEDIA_TYPE_VIDEO, @@ -484,4 +491,5 @@ AVCodec ff_ansi_decoder = { .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, + .defaults = ansi_defaults, };