mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-26 09:12:33 +00:00
avcodec: add SGA PCM decoder
This commit is contained in:
parent
0e645b98c6
commit
5111707df6
@ -830,6 +830,7 @@ OBJS-$(CONFIG_PCM_S64BE_DECODER) += pcm.o
|
|||||||
OBJS-$(CONFIG_PCM_S64BE_ENCODER) += pcm.o
|
OBJS-$(CONFIG_PCM_S64BE_ENCODER) += pcm.o
|
||||||
OBJS-$(CONFIG_PCM_S64LE_DECODER) += pcm.o
|
OBJS-$(CONFIG_PCM_S64LE_DECODER) += pcm.o
|
||||||
OBJS-$(CONFIG_PCM_S64LE_ENCODER) += pcm.o
|
OBJS-$(CONFIG_PCM_S64LE_ENCODER) += pcm.o
|
||||||
|
OBJS-$(CONFIG_PCM_SGA_DECODER) += pcm.o
|
||||||
OBJS-$(CONFIG_PCM_U8_DECODER) += pcm.o
|
OBJS-$(CONFIG_PCM_U8_DECODER) += pcm.o
|
||||||
OBJS-$(CONFIG_PCM_U8_ENCODER) += pcm.o
|
OBJS-$(CONFIG_PCM_U8_ENCODER) += pcm.o
|
||||||
OBJS-$(CONFIG_PCM_U16BE_DECODER) += pcm.o
|
OBJS-$(CONFIG_PCM_U16BE_DECODER) += pcm.o
|
||||||
|
@ -568,6 +568,7 @@ extern AVCodec ff_pcm_s64be_encoder;
|
|||||||
extern AVCodec ff_pcm_s64be_decoder;
|
extern AVCodec ff_pcm_s64be_decoder;
|
||||||
extern AVCodec ff_pcm_s64le_encoder;
|
extern AVCodec ff_pcm_s64le_encoder;
|
||||||
extern AVCodec ff_pcm_s64le_decoder;
|
extern AVCodec ff_pcm_s64le_decoder;
|
||||||
|
extern AVCodec ff_pcm_sga_decoder;
|
||||||
extern AVCodec ff_pcm_u8_encoder;
|
extern AVCodec ff_pcm_u8_encoder;
|
||||||
extern AVCodec ff_pcm_u8_decoder;
|
extern AVCodec ff_pcm_u8_decoder;
|
||||||
extern AVCodec ff_pcm_u16be_encoder;
|
extern AVCodec ff_pcm_u16be_encoder;
|
||||||
|
@ -2096,6 +2096,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
|||||||
.long_name = NULL_IF_CONFIG_SMALL("PCM Archimedes VIDC"),
|
.long_name = NULL_IF_CONFIG_SMALL("PCM Archimedes VIDC"),
|
||||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
|
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.id = AV_CODEC_ID_PCM_SGA,
|
||||||
|
.type = AVMEDIA_TYPE_AUDIO,
|
||||||
|
.name = "pcm_sga",
|
||||||
|
.long_name = NULL_IF_CONFIG_SMALL("PCM SGA"),
|
||||||
|
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
|
||||||
|
},
|
||||||
|
|
||||||
/* various ADPCM codecs */
|
/* various ADPCM codecs */
|
||||||
{
|
{
|
||||||
|
@ -346,6 +346,7 @@ enum AVCodecID {
|
|||||||
AV_CODEC_ID_PCM_F16LE,
|
AV_CODEC_ID_PCM_F16LE,
|
||||||
AV_CODEC_ID_PCM_F24LE,
|
AV_CODEC_ID_PCM_F24LE,
|
||||||
AV_CODEC_ID_PCM_VIDC,
|
AV_CODEC_ID_PCM_VIDC,
|
||||||
|
AV_CODEC_ID_PCM_SGA,
|
||||||
|
|
||||||
/* various ADPCM codecs */
|
/* various ADPCM codecs */
|
||||||
AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
|
AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
|
||||||
|
@ -419,6 +419,14 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
for (; n > 0; n--)
|
for (; n > 0; n--)
|
||||||
*samples++ = *src++ + 128;
|
*samples++ = *src++ + 128;
|
||||||
break;
|
break;
|
||||||
|
case AV_CODEC_ID_PCM_SGA:
|
||||||
|
for (; n > 0; n--) {
|
||||||
|
int sign = *src >> 7;
|
||||||
|
int magn = *src & 0x7f;
|
||||||
|
*samples++ = sign ? 128 - magn : 128 + magn;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case AV_CODEC_ID_PCM_S8_PLANAR:
|
case AV_CODEC_ID_PCM_S8_PLANAR:
|
||||||
n /= avctx->channels;
|
n /= avctx->channels;
|
||||||
for (c = 0; c < avctx->channels; c++) {
|
for (c = 0; c < avctx->channels; c++) {
|
||||||
@ -622,3 +630,4 @@ PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned
|
|||||||
PCM_CODEC (PCM_S64BE, AV_SAMPLE_FMT_S64, pcm_s64be, "PCM signed 64-bit big-endian");
|
PCM_CODEC (PCM_S64BE, AV_SAMPLE_FMT_S64, pcm_s64be, "PCM signed 64-bit big-endian");
|
||||||
PCM_CODEC (PCM_S64LE, AV_SAMPLE_FMT_S64, pcm_s64le, "PCM signed 64-bit little-endian");
|
PCM_CODEC (PCM_S64LE, AV_SAMPLE_FMT_S64, pcm_s64le, "PCM signed 64-bit little-endian");
|
||||||
PCM_CODEC (PCM_VIDC, AV_SAMPLE_FMT_S16, pcm_vidc, "PCM Archimedes VIDC");
|
PCM_CODEC (PCM_VIDC, AV_SAMPLE_FMT_S16, pcm_vidc, "PCM Archimedes VIDC");
|
||||||
|
PCM_DECODER(PCM_SGA, AV_SAMPLE_FMT_U8, pcm_sga, "PCM SGA");
|
||||||
|
@ -1547,6 +1547,7 @@ int av_get_exact_bits_per_sample(enum AVCodecID codec_id)
|
|||||||
case AV_CODEC_ID_PCM_VIDC:
|
case AV_CODEC_ID_PCM_VIDC:
|
||||||
case AV_CODEC_ID_PCM_S8:
|
case AV_CODEC_ID_PCM_S8:
|
||||||
case AV_CODEC_ID_PCM_S8_PLANAR:
|
case AV_CODEC_ID_PCM_S8_PLANAR:
|
||||||
|
case AV_CODEC_ID_PCM_SGA:
|
||||||
case AV_CODEC_ID_PCM_U8:
|
case AV_CODEC_ID_PCM_U8:
|
||||||
case AV_CODEC_ID_SDX2_DPCM:
|
case AV_CODEC_ID_SDX2_DPCM:
|
||||||
case AV_CODEC_ID_DERF_DPCM:
|
case AV_CODEC_ID_DERF_DPCM:
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include "libavutil/version.h"
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_MAJOR 58
|
#define LIBAVCODEC_VERSION_MAJOR 58
|
||||||
#define LIBAVCODEC_VERSION_MINOR 126
|
#define LIBAVCODEC_VERSION_MINOR 127
|
||||||
#define LIBAVCODEC_VERSION_MICRO 100
|
#define LIBAVCODEC_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user