Re: [FFmpeg-devel] [PATCH 1/2] avcodec: Implement Archimedes VIDC encoder/decoder

2018-10-25 Thread Cameron Cawley
> Are there files available so I can test this?

Various sample files can be found at
http://samples.mplayerhq.hu/archive/container/rpl/ and
ftp://ftp.uni-stuttgart.de/pub/systems/acorn/riscos/graphics/replay . Most
of them use VIDC for audio.

On Thu, 25 Oct 2018 at 18:28, Paul B Mahol  wrote:

> On 10/13/18, Cameron Cawley  wrote:
> > Signed-off-by: Cameron Cawley 
> > ---
> >  doc/general.texi  |  2 ++
> >  libavcodec/Makefile   |  2 ++
> >  libavcodec/allcodecs.c|  2 ++
> >  libavcodec/avcodec.h  |  1 +
> >  libavcodec/codec_desc.c   |  7 +++
> >  libavcodec/pcm.c  | 15 +++
> >  libavcodec/pcm_tablegen.c |  2 ++
> >  libavcodec/pcm_tablegen.h | 27 +++
> >  libavcodec/utils.c|  1 +
> >  libavformat/Makefile  |  2 ++
> >  libavformat/allformats.c  |  2 ++
> >  libavformat/pcmdec.c  |  3 +++
> >  libavformat/pcmenc.c  |  3 +++
> >  13 files changed, 69 insertions(+)
> >
>
> Are there files available so I can test this?
>
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/2] avcodec: Implement Archimedes VIDC encoder/decoder

2018-10-25 Thread Paul B Mahol
On 10/13/18, Cameron Cawley  wrote:
> Signed-off-by: Cameron Cawley 
> ---
>  doc/general.texi  |  2 ++
>  libavcodec/Makefile   |  2 ++
>  libavcodec/allcodecs.c|  2 ++
>  libavcodec/avcodec.h  |  1 +
>  libavcodec/codec_desc.c   |  7 +++
>  libavcodec/pcm.c  | 15 +++
>  libavcodec/pcm_tablegen.c |  2 ++
>  libavcodec/pcm_tablegen.h | 27 +++
>  libavcodec/utils.c|  1 +
>  libavformat/Makefile  |  2 ++
>  libavformat/allformats.c  |  2 ++
>  libavformat/pcmdec.c  |  3 +++
>  libavformat/pcmenc.c  |  3 +++
>  13 files changed, 69 insertions(+)
>

Are there files available so I can test this?
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/2] avcodec: Implement Archimedes VIDC encoder/decoder

2018-10-12 Thread Cameron Cawley
Signed-off-by: Cameron Cawley 
---
 doc/general.texi  |  2 ++
 libavcodec/Makefile   |  2 ++
 libavcodec/allcodecs.c|  2 ++
 libavcodec/avcodec.h  |  1 +
 libavcodec/codec_desc.c   |  7 +++
 libavcodec/pcm.c  | 15 +++
 libavcodec/pcm_tablegen.c |  2 ++
 libavcodec/pcm_tablegen.h | 27 +++
 libavcodec/utils.c|  1 +
 libavformat/Makefile  |  2 ++
 libavformat/allformats.c  |  2 ++
 libavformat/pcmdec.c  |  3 +++
 libavformat/pcmenc.c  |  3 +++
 13 files changed, 69 insertions(+)

diff --git a/doc/general.texi b/doc/general.texi
index 05f7bcd9fc..e3874430a4 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -545,6 +545,7 @@ library:
 @item raw VC-1  @tab X @tab X
 @item raw PCM A-law @tab X @tab X
 @item raw PCM mu-law@tab X @tab X
+@item raw PCM Archimedes VIDC   @tab X @tab X
 @item raw PCM signed 8 bit  @tab X @tab X
 @item raw PCM signed 16 bit big-endian  @tab X @tab X
 @item raw PCM signed 16 bit little-endian  @tab X @tab X
@@ -1146,6 +1147,7 @@ following image formats are supported:
 @tab encoding supported through external library libopus
 @item PCM A-law  @tab  X  @tab  X
 @item PCM mu-law @tab  X  @tab  X
+@item PCM Archimedes VIDC@tab  X  @tab  X
 @item PCM signed 8-bit planar  @tab  X  @tab  X
 @item PCM signed 16-bit big-endian planar  @tab  X  @tab  X
 @item PCM signed 16-bit little-endian planar  @tab  X  @tab  X
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index ce766aa466..b12d9ffccd 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -794,6 +794,8 @@ OBJS-$(CONFIG_PCM_U32BE_DECODER)  += pcm.o
 OBJS-$(CONFIG_PCM_U32BE_ENCODER)  += pcm.o
 OBJS-$(CONFIG_PCM_U32LE_DECODER)  += pcm.o
 OBJS-$(CONFIG_PCM_U32LE_ENCODER)  += pcm.o
+OBJS-$(CONFIG_PCM_VIDC_DECODER)   += pcm.o
+OBJS-$(CONFIG_PCM_VIDC_ENCODER)   += pcm.o
 OBJS-$(CONFIG_PCM_ZORK_DECODER)   += pcm.o
 
 OBJS-$(CONFIG_ADPCM_4XM_DECODER)  += adpcm.o adpcm_data.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index c0b4d56d0d..1b8144a2b7 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -552,6 +552,8 @@ extern AVCodec ff_pcm_u32be_encoder;
 extern AVCodec ff_pcm_u32be_decoder;
 extern AVCodec ff_pcm_u32le_encoder;
 extern AVCodec ff_pcm_u32le_decoder;
+extern AVCodec ff_pcm_vidc_encoder;
+extern AVCodec ff_pcm_vidc_decoder;
 extern AVCodec ff_pcm_zork_decoder;
 
 /* DPCM codecs */
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 705a3ce4f3..7ffef768dc 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -491,6 +491,7 @@ enum AVCodecID {
 AV_CODEC_ID_PCM_S64BE,
 AV_CODEC_ID_PCM_F16LE,
 AV_CODEC_ID_PCM_F24LE,
+AV_CODEC_ID_PCM_VIDC,
 
 /* various ADPCM codecs */
 AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
index 67a30542d1..1a159f7e13 100644
--- a/libavcodec/codec_desc.c
+++ b/libavcodec/codec_desc.c
@@ -1936,6 +1936,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
 .long_name = NULL_IF_CONFIG_SMALL("PCM 24.0 floating point 
little-endian"),
 .props = AV_CODEC_PROP_LOSSLESS,
 },
+{
+.id= AV_CODEC_ID_PCM_VIDC,
+.type  = AVMEDIA_TYPE_AUDIO,
+.name  = "pcm_vidc",
+.long_name = NULL_IF_CONFIG_SMALL("PCM Archimedes VIDC"),
+.props = AV_CODEC_PROP_LOSSY,
+},
 
 /* various ADPCM codecs */
 {
diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
index 8c326c6829..ffcbccc77d 100644
--- a/libavcodec/pcm.c
+++ b/libavcodec/pcm.c
@@ -42,6 +42,9 @@ static av_cold int pcm_encode_init(AVCodecContext *avctx)
 case AV_CODEC_ID_PCM_MULAW:
 pcm_ulaw_tableinit();
 break;
+case AV_CODEC_ID_PCM_VIDC:
+pcm_vidc_tableinit();
+break;
 default:
 break;
 }
@@ -216,6 +219,12 @@ static int pcm_encode_frame(AVCodecContext *avctx, 
AVPacket *avpkt,
 *dst++ = linear_to_ulaw[(v + 32768) >> 2];
 }
 break;
+case AV_CODEC_ID_PCM_VIDC:
+for (; n > 0; n--) {
+v  = *samples++;
+*dst++ = linear_to_vidc[(v + 32768) >> 2];
+}
+break;
 default:
 return -1;
 }
@@ -249,6 +258,10 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx)
 for (i = 0; i < 256; i++)
 s->table[i] = ulaw2linear(i);
 break;
+case AV_CODEC_ID_PCM_VIDC:
+for (i = 0; i < 256; i++)
+s->table[i] = vidc2linear(i);
+break;
 case AV_CODEC_ID_PCM_F16LE:
 case AV_CODEC_ID_PCM_F24LE:
 s->scale = 1. / (1 << (avctx->bits_per_coded_sample - 1));
@@ -485,6 +498,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void 
*data,
 break;
 case AV_CODEC_ID_PCM_ALAW:
 case AV_CODEC_ID_PCM_MULAW:
+