FFmpeg  4.4
Data Structures | Macros | Functions
pcm.c File Reference

PCM codecs. More...

#include "config.h"
#include "libavutil/attributes.h"
#include "libavutil/float_dsp.h"
#include "libavutil/thread.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
#include "mathops.h"
#include "pcm_tablegen.h"

Go to the source code of this file.

Data Structures

struct  PCMDecode
 

Macros

#define INIT_ONCE(id, name)
 
#define ENCODE(type, endian, src, dst, n, shift, offset)
 Write PCM samples macro. More...
 
#define ENCODE_PLANAR(type, endian, dst, n, shift, offset)
 
#define DECODE(size, endian, src, dst, n, shift, offset)
 Read PCM samples macro. More...
 
#define DECODE_PLANAR(size, endian, src, dst, n, shift, offset)
 
#define PCM_ENCODER_0(id_, sample_fmt_, name_, long_name_)
 
#define PCM_ENCODER_1(id_, sample_fmt_, name_, long_name_)
 
#define PCM_ENCODER_2(cf, id, sample_fmt, name, long_name)    PCM_ENCODER_ ## cf(id, sample_fmt, name, long_name)
 
#define PCM_ENCODER_3(cf, id, sample_fmt, name, long_name)    PCM_ENCODER_2(cf, id, sample_fmt, name, long_name)
 
#define PCM_ENCODER(id, sample_fmt, name, long_name)    PCM_ENCODER_3(CONFIG_ ## id ## _ENCODER, id, sample_fmt, name, long_name)
 
#define PCM_DECODER_0(id, sample_fmt, name, long_name)
 
#define PCM_DECODER_1(id_, sample_fmt_, name_, long_name_)
 
#define PCM_DECODER_2(cf, id, sample_fmt, name, long_name)    PCM_DECODER_ ## cf(id, sample_fmt, name, long_name)
 
#define PCM_DECODER_3(cf, id, sample_fmt, name, long_name)    PCM_DECODER_2(cf, id, sample_fmt, name, long_name)
 
#define PCM_DECODER(id, sample_fmt, name, long_name)    PCM_DECODER_3(CONFIG_ ## id ## _DECODER, id, sample_fmt, name, long_name)
 
#define PCM_CODEC(id, sample_fmt_, name, long_name_)
 

Functions

static av_cold int pcm_encode_init (AVCodecContext *avctx)
 
static int pcm_encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 
static av_cold int pcm_decode_init (AVCodecContext *avctx)
 
static int pcm_decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
 
 PCM_CODEC (PCM_ALAW, AV_SAMPLE_FMT_S16, pcm_alaw, "PCM A-law / G.711 A-law")
 
 PCM_DECODER (PCM_F16LE, AV_SAMPLE_FMT_FLT, pcm_f16le, "PCM 16.8 floating point little-endian")
 
 PCM_DECODER (PCM_F24LE, AV_SAMPLE_FMT_FLT, pcm_f24le, "PCM 24.0 floating point little-endian")
 
 PCM_CODEC (PCM_F32BE, AV_SAMPLE_FMT_FLT, pcm_f32be, "PCM 32-bit floating point big-endian")
 
 PCM_CODEC (PCM_F32LE, AV_SAMPLE_FMT_FLT, pcm_f32le, "PCM 32-bit floating point little-endian")
 
 PCM_CODEC (PCM_F64BE, AV_SAMPLE_FMT_DBL, pcm_f64be, "PCM 64-bit floating point big-endian")
 
 PCM_CODEC (PCM_F64LE, AV_SAMPLE_FMT_DBL, pcm_f64le, "PCM 64-bit floating point little-endian")
 
 PCM_DECODER (PCM_LXF, AV_SAMPLE_FMT_S32P, pcm_lxf, "PCM signed 20-bit little-endian planar")
 
 PCM_CODEC (PCM_MULAW, AV_SAMPLE_FMT_S16, pcm_mulaw, "PCM mu-law / G.711 mu-law")
 
 PCM_CODEC (PCM_S8, AV_SAMPLE_FMT_U8, pcm_s8, "PCM signed 8-bit")
 
 PCM_CODEC (PCM_S8_PLANAR, AV_SAMPLE_FMT_U8P, pcm_s8_planar, "PCM signed 8-bit planar")
 
 PCM_CODEC (PCM_S16BE, AV_SAMPLE_FMT_S16, pcm_s16be, "PCM signed 16-bit big-endian")
 
 PCM_CODEC (PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P, pcm_s16be_planar, "PCM signed 16-bit big-endian planar")
 
 PCM_CODEC (PCM_S16LE, AV_SAMPLE_FMT_S16, pcm_s16le, "PCM signed 16-bit little-endian")
 
 PCM_CODEC (PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P, pcm_s16le_planar, "PCM signed 16-bit little-endian planar")
 
 PCM_CODEC (PCM_S24BE, AV_SAMPLE_FMT_S32, pcm_s24be, "PCM signed 24-bit big-endian")
 
 PCM_CODEC (PCM_S24DAUD, AV_SAMPLE_FMT_S16, pcm_s24daud, "PCM D-Cinema audio signed 24-bit")
 
 PCM_CODEC (PCM_S24LE, AV_SAMPLE_FMT_S32, pcm_s24le, "PCM signed 24-bit little-endian")
 
 PCM_CODEC (PCM_S24LE_PLANAR, AV_SAMPLE_FMT_S32P, pcm_s24le_planar, "PCM signed 24-bit little-endian planar")
 
 PCM_CODEC (PCM_S32BE, AV_SAMPLE_FMT_S32, pcm_s32be, "PCM signed 32-bit big-endian")
 
 PCM_CODEC (PCM_S32LE, AV_SAMPLE_FMT_S32, pcm_s32le, "PCM signed 32-bit little-endian")
 
 PCM_CODEC (PCM_S32LE_PLANAR, AV_SAMPLE_FMT_S32P, pcm_s32le_planar, "PCM signed 32-bit little-endian planar")
 
 PCM_CODEC (PCM_U8, AV_SAMPLE_FMT_U8, pcm_u8, "PCM unsigned 8-bit")
 
 PCM_CODEC (PCM_U16BE, AV_SAMPLE_FMT_S16, pcm_u16be, "PCM unsigned 16-bit big-endian")
 
 PCM_CODEC (PCM_U16LE, AV_SAMPLE_FMT_S16, pcm_u16le, "PCM unsigned 16-bit little-endian")
 
 PCM_CODEC (PCM_U24BE, AV_SAMPLE_FMT_S32, pcm_u24be, "PCM unsigned 24-bit big-endian")
 
 PCM_CODEC (PCM_U24LE, AV_SAMPLE_FMT_S32, pcm_u24le, "PCM unsigned 24-bit little-endian")
 
 PCM_CODEC (PCM_U32BE, AV_SAMPLE_FMT_S32, pcm_u32be, "PCM unsigned 32-bit big-endian")
 
 PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned 32-bit little-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_VIDC, AV_SAMPLE_FMT_S16, pcm_vidc, "PCM Archimedes VIDC")
 
 PCM_DECODER (PCM_SGA, AV_SAMPLE_FMT_U8, pcm_sga, "PCM SGA")
 

Detailed Description

PCM codecs.

Definition in file pcm.c.

Macro Definition Documentation

◆ INIT_ONCE

#define INIT_ONCE (   id,
  name 
)
Value:
case AV_CODEC_ID_PCM_ ## id: \
if (CONFIG_PCM_ ## id ## _ENCODER) { \
static AVOnce init_static_once = AV_ONCE_INIT; \
ff_thread_once(&init_static_once, pcm_ ## name ## _tableinit); \
} \
break
enum AVCodecID id
#define AVOnce
Definition: thread.h:172
#define AV_ONCE_INIT
Definition: thread.h:173
const char * name
Definition: qsvenc.c:46

◆ ENCODE

#define ENCODE (   type,
  endian,
  src,
  dst,
  n,
  shift,
  offset 
)
Value:
samples_ ## type = (const type *) src; \
for (; n > 0; n--) { \
register type v = (*samples_ ## type++ >> shift) + offset; \
bytestream_put_ ## endian(&dst, v); \
}
cl_device_type type
static int shift(int a, int b)
Definition: sonic.c:82
#define src
Definition: vp8dsp.c:255
static const uint8_t offset[127][2]
Definition: vf_spp.c:107

Write PCM samples macro.

Parameters
typeDatatype of native machine format
endianbytestream_put_xxx() suffix
srcSource pointer (variable name)
dstDestination pointer (variable name)
nTotal number of samples (variable name)
shiftBitshift (bits)
offsetSample value offset

Definition at line 74 of file pcm.c.

◆ ENCODE_PLANAR

#define ENCODE_PLANAR (   type,
  endian,
  dst,
  n,
  shift,
  offset 
)
Value:
n /= avctx->channels; \
for (c = 0; c < avctx->channels; c++) { \
int i; \
samples_ ## type = (const type *) frame->extended_data[c]; \
for (i = n; i > 0; i--) { \
register type v = (*samples_ ## type++ >> shift) + offset; \
bytestream_put_ ## endian(&dst, v); \
} \
}
static AVFrame * frame
for(j=16;j >0;--j)
int i
Definition: input.c:407
uint8_t ** extended_data
pointers to the data planes/channels.
Definition: frame.h:365
static double c[64]

Definition at line 81 of file pcm.c.

◆ DECODE

#define DECODE (   size,
  endian,
  src,
  dst,
  n,
  shift,
  offset 
)
Value:
for (; n > 0; n--) { \
uint ## size ## _t v = bytestream_get_ ## endian(&src); \
AV_WN ## size ## A(dst, (uint ## size ## _t)(v - offset) << shift); \
dst += size / 8; \
}
#define A(x)
Definition: vp56_arith.h:28
int size

Read PCM samples macro.

Parameters
sizeData size of native machine format
endianbytestream_get_xxx() endian suffix
srcSource pointer (variable name)
dstDestination pointer (variable name)
nTotal number of samples (variable name)
shiftBitshift (bits)
offsetSample value offset

Definition at line 306 of file pcm.c.

◆ DECODE_PLANAR

#define DECODE_PLANAR (   size,
  endian,
  src,
  dst,
  n,
  shift,
  offset 
)
Value:
n /= avctx->channels; \
for (c = 0; c < avctx->channels; c++) { \
int i; \
dst = frame->extended_data[c]; \
for (i = n; i > 0; i--) { \
uint ## size ## _t v = bytestream_get_ ## endian(&src); \
AV_WN ## size ## A(dst, (uint ## size ##_t)(v - offset) << shift); \
dst += size / 8; \
} \
}

Definition at line 313 of file pcm.c.

◆ PCM_ENCODER_0

#define PCM_ENCODER_0 (   id_,
  sample_fmt_,
  name_,
  long_name_ 
)

Definition at line 551 of file pcm.c.

◆ PCM_ENCODER_1

#define PCM_ENCODER_1 (   id_,
  sample_fmt_,
  name_,
  long_name_ 
)
Value:
AVCodec ff_ ## name_ ## _encoder = { \
.name = #name_, \
.long_name = NULL_IF_CONFIG_SMALL(long_name_), \
.type = AVMEDIA_TYPE_AUDIO, \
.id = AV_CODEC_ID_ ## id_, \
.init = pcm_encode_init, \
.encode2 = pcm_encode_frame, \
.sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \
AV_SAMPLE_FMT_NONE }, \
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, \
}
#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE
Audio encoder supports receiving a different number of samples in each call.
Definition: codec.h:129
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:58
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: internal.h:41
static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition: pcm.c:92
static av_cold int pcm_encode_init(AVCodecContext *avctx)
Definition: pcm.c:37
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:117
AVCodec.
Definition: codec.h:197
const char * name
Name of the codec implementation.
Definition: codec.h:204

Definition at line 552 of file pcm.c.

◆ PCM_ENCODER_2

#define PCM_ENCODER_2 (   cf,
  id,
  sample_fmt,
  name,
  long_name 
)     PCM_ENCODER_ ## cf(id, sample_fmt, name, long_name)

Definition at line 566 of file pcm.c.

◆ PCM_ENCODER_3

#define PCM_ENCODER_3 (   cf,
  id,
  sample_fmt,
  name,
  long_name 
)     PCM_ENCODER_2(cf, id, sample_fmt, name, long_name)

Definition at line 568 of file pcm.c.

◆ PCM_ENCODER

#define PCM_ENCODER (   id,
  sample_fmt,
  name,
  long_name 
)     PCM_ENCODER_3(CONFIG_ ## id ## _ENCODER, id, sample_fmt, name, long_name)

Definition at line 570 of file pcm.c.

◆ PCM_DECODER_0

#define PCM_DECODER_0 (   id,
  sample_fmt,
  name,
  long_name 
)

Definition at line 573 of file pcm.c.

◆ PCM_DECODER_1

#define PCM_DECODER_1 (   id_,
  sample_fmt_,
  name_,
  long_name_ 
)
Value:
AVCodec ff_ ## name_ ## _decoder = { \
.name = #name_, \
.long_name = NULL_IF_CONFIG_SMALL(long_name_), \
.type = AVMEDIA_TYPE_AUDIO, \
.id = AV_CODEC_ID_ ## id_, \
.priv_data_size = sizeof(PCMDecode), \
.capabilities = AV_CODEC_CAP_DR1, \
.sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \
AV_SAMPLE_FMT_NONE }, \
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, \
}
static enum AVSampleFormat sample_fmts[]
Definition: adpcmenc.c:925
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:31
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
Definition: decode_audio.c:71
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
static av_cold int pcm_decode_init(AVCodecContext *avctx)
Definition: pcm.c:248
static int pcm_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
Definition: pcm.c:325
Definition: pcm.c:241

Definition at line 574 of file pcm.c.

◆ PCM_DECODER_2

#define PCM_DECODER_2 (   cf,
  id,
  sample_fmt,
  name,
  long_name 
)     PCM_DECODER_ ## cf(id, sample_fmt, name, long_name)

Definition at line 589 of file pcm.c.

◆ PCM_DECODER_3

#define PCM_DECODER_3 (   cf,
  id,
  sample_fmt,
  name,
  long_name 
)     PCM_DECODER_2(cf, id, sample_fmt, name, long_name)

Definition at line 591 of file pcm.c.

◆ PCM_DECODER

#define PCM_DECODER (   id,
  sample_fmt,
  name,
  long_name 
)     PCM_DECODER_3(CONFIG_ ## id ## _DECODER, id, sample_fmt, name, long_name)

Definition at line 593 of file pcm.c.

◆ PCM_CODEC

#define PCM_CODEC (   id,
  sample_fmt_,
  name,
  long_name_ 
)
Value:
PCM_ENCODER(id, sample_fmt_, name, long_name_); \
PCM_DECODER(id, sample_fmt_, name, long_name_)
#define PCM_ENCODER(id, sample_fmt, name, long_name)
Definition: pcm.c:570

Definition at line 596 of file pcm.c.

Function Documentation

◆ pcm_encode_init()

static av_cold int pcm_encode_init ( AVCodecContext avctx)
static

Definition at line 37 of file pcm.c.

◆ pcm_encode_frame()

static int pcm_encode_frame ( AVCodecContext avctx,
AVPacket avpkt,
const AVFrame frame,
int got_packet_ptr 
)
static

Definition at line 92 of file pcm.c.

◆ pcm_decode_init()

static av_cold int pcm_decode_init ( AVCodecContext avctx)
static

Definition at line 248 of file pcm.c.

◆ pcm_decode_frame()

static int pcm_decode_frame ( AVCodecContext avctx,
void data,
int got_frame_ptr,
AVPacket avpkt 
)
static

Definition at line 325 of file pcm.c.

◆ PCM_CODEC() [1/29]

PCM_CODEC ( PCM_ALAW  ,
AV_SAMPLE_FMT_S16  ,
pcm_alaw  ,
"PCM A-law / G.711 A-law"   
)

◆ PCM_DECODER() [1/4]

PCM_DECODER ( PCM_F16LE  ,
AV_SAMPLE_FMT_FLT  ,
pcm_f16le  ,
"PCM 16.8 floating point little-endian"   
)

◆ PCM_DECODER() [2/4]

PCM_DECODER ( PCM_F24LE  ,
AV_SAMPLE_FMT_FLT  ,
pcm_f24le  ,
"PCM 24.0 floating point little-endian"   
)

◆ PCM_CODEC() [2/29]

PCM_CODEC ( PCM_F32BE  ,
AV_SAMPLE_FMT_FLT  ,
pcm_f32be  ,
"PCM 32-bit floating point big-endian"   
)

◆ PCM_CODEC() [3/29]

PCM_CODEC ( PCM_F32LE  ,
AV_SAMPLE_FMT_FLT  ,
pcm_f32le  ,
"PCM 32-bit floating point little-endian"   
)

◆ PCM_CODEC() [4/29]

PCM_CODEC ( PCM_F64BE  ,
AV_SAMPLE_FMT_DBL  ,
pcm_f64be  ,
"PCM 64-bit floating point big-endian"   
)

◆ PCM_CODEC() [5/29]

PCM_CODEC ( PCM_F64LE  ,
AV_SAMPLE_FMT_DBL  ,
pcm_f64le  ,
"PCM 64-bit floating point little-endian"   
)

◆ PCM_DECODER() [3/4]

PCM_DECODER ( PCM_LXF  ,
AV_SAMPLE_FMT_S32P  ,
pcm_lxf  ,
"PCM signed 20-bit little-endian planar  
)

◆ PCM_CODEC() [6/29]

PCM_CODEC ( PCM_MULAW  ,
AV_SAMPLE_FMT_S16  ,
pcm_mulaw  ,
"PCM mu-law / G.711 mu-law"   
)

◆ PCM_CODEC() [7/29]

PCM_CODEC ( PCM_S8  ,
AV_SAMPLE_FMT_U8  ,
pcm_s8  ,
"PCM signed 8-bit  
)

◆ PCM_CODEC() [8/29]

PCM_CODEC ( PCM_S8_PLANAR  ,
AV_SAMPLE_FMT_U8P  ,
pcm_s8_planar  ,
"PCM signed 8-bit planar  
)

◆ PCM_CODEC() [9/29]

PCM_CODEC ( PCM_S16BE  ,
AV_SAMPLE_FMT_S16  ,
pcm_s16be  ,
"PCM signed 16-bit big-endian"   
)

◆ PCM_CODEC() [10/29]

PCM_CODEC ( PCM_S16BE_PLANAR  ,
AV_SAMPLE_FMT_S16P  ,
pcm_s16be_planar  ,
"PCM signed 16-bit big-endian planar  
)

◆ PCM_CODEC() [11/29]

PCM_CODEC ( PCM_S16LE  ,
AV_SAMPLE_FMT_S16  ,
pcm_s16le  ,
"PCM signed 16-bit little-endian"   
)

◆ PCM_CODEC() [12/29]

PCM_CODEC ( PCM_S16LE_PLANAR  ,
AV_SAMPLE_FMT_S16P  ,
pcm_s16le_planar  ,
"PCM signed 16-bit little-endian planar  
)

◆ PCM_CODEC() [13/29]

PCM_CODEC ( PCM_S24BE  ,
AV_SAMPLE_FMT_S32  ,
pcm_s24be  ,
"PCM signed 24-bit big-endian"   
)

◆ PCM_CODEC() [14/29]

PCM_CODEC ( PCM_S24DAUD  ,
AV_SAMPLE_FMT_S16  ,
pcm_s24daud  ,
"PCM D-Cinema audio signed 24-bit  
)

◆ PCM_CODEC() [15/29]

PCM_CODEC ( PCM_S24LE  ,
AV_SAMPLE_FMT_S32  ,
pcm_s24le  ,
"PCM signed 24-bit little-endian"   
)

◆ PCM_CODEC() [16/29]

PCM_CODEC ( PCM_S24LE_PLANAR  ,
AV_SAMPLE_FMT_S32P  ,
pcm_s24le_planar  ,
"PCM signed 24-bit little-endian planar  
)

◆ PCM_CODEC() [17/29]

PCM_CODEC ( PCM_S32BE  ,
AV_SAMPLE_FMT_S32  ,
pcm_s32be  ,
"PCM signed 32-bit big-endian"   
)

◆ PCM_CODEC() [18/29]

PCM_CODEC ( PCM_S32LE  ,
AV_SAMPLE_FMT_S32  ,
pcm_s32le  ,
"PCM signed 32-bit little-endian"   
)

◆ PCM_CODEC() [19/29]

PCM_CODEC ( PCM_S32LE_PLANAR  ,
AV_SAMPLE_FMT_S32P  ,
pcm_s32le_planar  ,
"PCM signed 32-bit little-endian planar  
)

◆ PCM_CODEC() [20/29]

PCM_CODEC ( PCM_U8  ,
AV_SAMPLE_FMT_U8  ,
pcm_u8  ,
"PCM unsigned 8-bit  
)

◆ PCM_CODEC() [21/29]

PCM_CODEC ( PCM_U16BE  ,
AV_SAMPLE_FMT_S16  ,
pcm_u16be  ,
"PCM unsigned 16-bit big-endian"   
)

◆ PCM_CODEC() [22/29]

PCM_CODEC ( PCM_U16LE  ,
AV_SAMPLE_FMT_S16  ,
pcm_u16le  ,
"PCM unsigned 16-bit little-endian"   
)

◆ PCM_CODEC() [23/29]

PCM_CODEC ( PCM_U24BE  ,
AV_SAMPLE_FMT_S32  ,
pcm_u24be  ,
"PCM unsigned 24-bit big-endian"   
)

◆ PCM_CODEC() [24/29]

PCM_CODEC ( PCM_U24LE  ,
AV_SAMPLE_FMT_S32  ,
pcm_u24le  ,
"PCM unsigned 24-bit little-endian"   
)

◆ PCM_CODEC() [25/29]

PCM_CODEC ( PCM_U32BE  ,
AV_SAMPLE_FMT_S32  ,
pcm_u32be  ,
"PCM unsigned 32-bit big-endian"   
)

◆ PCM_CODEC() [26/29]

PCM_CODEC ( PCM_U32LE  ,
AV_SAMPLE_FMT_S32  ,
pcm_u32le  ,
"PCM unsigned 32-bit little-endian"   
)

◆ PCM_CODEC() [27/29]

PCM_CODEC ( PCM_S64BE  ,
AV_SAMPLE_FMT_S64  ,
pcm_s64be  ,
"PCM signed 64-bit big-endian"   
)

◆ PCM_CODEC() [28/29]

PCM_CODEC ( PCM_S64LE  ,
AV_SAMPLE_FMT_S64  ,
pcm_s64le  ,
"PCM signed 64-bit little-endian"   
)

◆ PCM_CODEC() [29/29]

PCM_CODEC ( PCM_VIDC  ,
AV_SAMPLE_FMT_S16  ,
pcm_vidc  ,
"PCM Archimedes VIDC"   
)

◆ PCM_DECODER() [4/4]

PCM_DECODER ( PCM_SGA  ,
AV_SAMPLE_FMT_U8  ,
pcm_sga  ,
"PCM SGA"   
)