[FFmpeg-devel] [PATCH 2/3] avcodec: add SGA Video decoder

James Almer jamrial at gmail.com
Tue Feb 23 19:49:15 EET 2021


On 2/23/2021 2:25 PM, Paul B Mahol wrote:
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
>   libavcodec/Makefile     |   1 +
>   libavcodec/allcodecs.c  |   1 +
>   libavcodec/codec_desc.c |   7 +
>   libavcodec/codec_id.h   |   1 +
>   libavcodec/sga.c        | 525 ++++++++++++++++++++++++++++++++++++++++
>   5 files changed, 535 insertions(+)
>   create mode 100644 libavcodec/sga.c
> 
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index 8685c15eeb..dfb4a89c92 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -609,6 +609,7 @@ OBJS-$(CONFIG_SANM_DECODER)            += sanm.o
>   OBJS-$(CONFIG_SCPR_DECODER)            += scpr.o
>   OBJS-$(CONFIG_SCREENPRESSO_DECODER)    += screenpresso.o
>   OBJS-$(CONFIG_SDX2_DPCM_DECODER)       += dpcm.o
> +OBJS-$(CONFIG_SGA_DECODER)             += sga.o
>   OBJS-$(CONFIG_SGI_DECODER)             += sgidec.o
>   OBJS-$(CONFIG_SGI_ENCODER)             += sgienc.o rle.o
>   OBJS-$(CONFIG_SGIRLE_DECODER)          += sgirledec.o
> diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
> index 990998b64b..a04faead16 100644
> --- a/libavcodec/allcodecs.c
> +++ b/libavcodec/allcodecs.c
> @@ -289,6 +289,7 @@ extern AVCodec ff_s302m_decoder;
>   extern AVCodec ff_sanm_decoder;
>   extern AVCodec ff_scpr_decoder;
>   extern AVCodec ff_screenpresso_decoder;
> +extern AVCodec ff_sga_decoder;
>   extern AVCodec ff_sgi_encoder;
>   extern AVCodec ff_sgi_decoder;
>   extern AVCodec ff_sgirle_decoder;
> diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
> index f64ba488f2..17f8a14044 100644
> --- a/libavcodec/codec_desc.c
> +++ b/libavcodec/codec_desc.c
> @@ -1849,6 +1849,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
>           .long_name = NULL_IF_CONFIG_SMALL("Simbiosis Interactive IMX Video"),
>           .props     = AV_CODEC_PROP_LOSSY,
>       },
> +    {
> +        .id        = AV_CODEC_ID_SGA_VIDEO,
> +        .type      = AVMEDIA_TYPE_VIDEO,
> +        .name      = "sga",
> +        .long_name = NULL_IF_CONFIG_SMALL("Digital Pictures SGA Video"),
> +        .props     = AV_CODEC_PROP_LOSSY,

AV_CODEC_PROP_INTRA_ONLY? Judging by how the demuxer sets every packet 
as a key frame.

[...]

> +
> +    memcpy(frame->data[1], s->pal, AVPALETTE_SIZE);
> +    frame->palette_has_changed = 1;

Missing frame->key_frame and frame->pict_type.

> +
> +    *got_frame = 1;
> +
> +    return avpkt->size;
> +}


More information about the ffmpeg-devel mailing list