History

avcodec: add 64-bit signed pcm codec

Paul B Mahol committed 10 years ago

Commit fc600ef1 parent 9876d8f9 files · +40 −5Browse files

Unified · Split

9 files
  1. libavcodec/Makefile +4 −0
  2. libavcodec/allcodecs.c +2 −0
  3. libavcodec/avcodec.h +3 −3
  4. libavcodec/codec_desc.c +14 −0
  5. libavcodec/pcm.c +10 −1
  6. libavcodec/utils.c +3 −0
  7. libavcodec/version.h +1 −1
  8. libavformat/riff.c +1 −0
  9. libavformat/utils.c +2 −0
libavcodec/Makefile+4−0
@@ -689,6 +689,10 @@ OBJS-$(CONFIG_PCM_S32LE_DECODER) += pcm.o · 688 unmodified lines
689OBJS-$(CONFIG_PCM_S32LE_ENCODER) += pcm.o689OBJS-$(CONFIG_PCM_S32LE_ENCODER) += pcm.o
690OBJS-$(CONFIG_PCM_S32LE_PLANAR_DECODER) += pcm.o690OBJS-$(CONFIG_PCM_S32LE_PLANAR_DECODER) += pcm.o
691OBJS-$(CONFIG_PCM_S32LE_PLANAR_ENCODER) += pcm.o691OBJS-$(CONFIG_PCM_S32LE_PLANAR_ENCODER) += pcm.o
692OBJS-$(CONFIG_PCM_S64BE_DECODER) += pcm.o
693OBJS-$(CONFIG_PCM_S64BE_ENCODER) += pcm.o
694OBJS-$(CONFIG_PCM_S64LE_DECODER) += pcm.o
695OBJS-$(CONFIG_PCM_S64LE_ENCODER) += pcm.o
692OBJS-$(CONFIG_PCM_U8_DECODER) += pcm.o696OBJS-$(CONFIG_PCM_U8_DECODER) += pcm.o
693OBJS-$(CONFIG_PCM_U8_ENCODER) += pcm.o697OBJS-$(CONFIG_PCM_U8_ENCODER) += pcm.o
694OBJS-$(CONFIG_PCM_U16BE_DECODER) += pcm.o698OBJS-$(CONFIG_PCM_U16BE_DECODER) += pcm.o
libavcodec/allcodecs.c+2−0
@@ -487,6 +487,8 @@ void avcodec_register_all(void) · 486 unmodified lines
487 REGISTER_ENCDEC (PCM_S32BE, pcm_s32be);487 REGISTER_ENCDEC (PCM_S32BE, pcm_s32be);
488 REGISTER_ENCDEC (PCM_S32LE, pcm_s32le);488 REGISTER_ENCDEC (PCM_S32LE, pcm_s32le);
489 REGISTER_ENCDEC (PCM_S32LE_PLANAR, pcm_s32le_planar);489 REGISTER_ENCDEC (PCM_S32LE_PLANAR, pcm_s32le_planar);
490 REGISTER_ENCDEC (PCM_S64BE, pcm_s64be);
491 REGISTER_ENCDEC (PCM_S64LE, pcm_s64le);
490 REGISTER_ENCDEC (PCM_U8, pcm_u8);492 REGISTER_ENCDEC (PCM_U8, pcm_u8);
491 REGISTER_ENCDEC (PCM_U16BE, pcm_u16be);493 REGISTER_ENCDEC (PCM_U16BE, pcm_u16be);
492 REGISTER_ENCDEC (PCM_U16LE, pcm_u16le);494 REGISTER_ENCDEC (PCM_U16LE, pcm_u16le);
libavcodec/avcodec.h+3−3
@@ -445,9 +445,9 @@ enum AVCodecID { · 444 unmodified lines
445 AV_CODEC_ID_PCM_S24LE_PLANAR,445 AV_CODEC_ID_PCM_S24LE_PLANAR,
446 AV_CODEC_ID_PCM_S32LE_PLANAR,446 AV_CODEC_ID_PCM_S32LE_PLANAR,
447 AV_CODEC_ID_PCM_S16BE_PLANAR,447 AV_CODEC_ID_PCM_S16BE_PLANAR,
448 /* new PCM "codecs" should be added right below this line starting with448
449 * an explicit value of for example 0x10800449 AV_CODEC_ID_PCM_S64LE = 0x10800,
450 */450 AV_CODEC_ID_PCM_S64BE,
451 451
452 /* various ADPCM codecs */452 /* various ADPCM codecs */
453 AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,453 AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
libavcodec/codec_desc.c+14−0
@@ -1636,6 +1636,20 @@ static const AVCodecDescriptor codec_descriptors[] = { · 1635 unmodified lines
1636 .long_name = NULL_IF_CONFIG_SMALL("PCM signed 32-bit big-endian"),1636 .long_name = NULL_IF_CONFIG_SMALL("PCM signed 32-bit big-endian"),
1637 .props = AV_CODEC_PROP_LOSSLESS,1637 .props = AV_CODEC_PROP_LOSSLESS,
1638 },1638 },
1639 {
1640 .id = AV_CODEC_ID_PCM_S64LE,
1641 .type = AVMEDIA_TYPE_AUDIO,
1642 .name = "pcm_s64le",
1643 .long_name = NULL_IF_CONFIG_SMALL("PCM signed 64-bit little-endian"),
1644 .props = AV_CODEC_PROP_LOSSLESS,
1645 },
1646 {
1647 .id = AV_CODEC_ID_PCM_S64BE,
1648 .type = AVMEDIA_TYPE_AUDIO,
1649 .name = "pcm_s64be",
1650 .long_name = NULL_IF_CONFIG_SMALL("PCM signed 64-bit big-endian"),
1651 .props = AV_CODEC_PROP_LOSSLESS,
1652 },
1639 {1653 {
1640 .id = AV_CODEC_ID_PCM_U32LE,1654 .id = AV_CODEC_ID_PCM_U32LE,
1641 .type = AVMEDIA_TYPE_AUDIO,1655 .type = AVMEDIA_TYPE_AUDIO,
libavcodec/pcm.c+10−1
@@ -145,6 +145,7 @@ static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, · 144 unmodified lines
145 ENCODE_PLANAR(uint8_t, byte, dst, n, 0, -128)145 ENCODE_PLANAR(uint8_t, byte, dst, n, 0, -128)
146 break;146 break;
147#if HAVE_BIGENDIAN147#if HAVE_BIGENDIAN
148 case AV_CODEC_ID_PCM_S64LE:
148 case AV_CODEC_ID_PCM_F64LE:149 case AV_CODEC_ID_PCM_F64LE:
149 ENCODE(int64_t, le64, samples, dst, n, 0, 0)150 ENCODE(int64_t, le64, samples, dst, n, 0, 0)
150 break;151 break;
@@ -163,9 +164,11 @@ static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, · 12 unmodified lines
163 break;164 break;
164 case AV_CODEC_ID_PCM_F64BE:165 case AV_CODEC_ID_PCM_F64BE:
165 case AV_CODEC_ID_PCM_F32BE:166 case AV_CODEC_ID_PCM_F32BE:
167 case AV_CODEC_ID_PCM_S64BE:
166 case AV_CODEC_ID_PCM_S32BE:168 case AV_CODEC_ID_PCM_S32BE:
167 case AV_CODEC_ID_PCM_S16BE:169 case AV_CODEC_ID_PCM_S16BE:
168#else170#else
171 case AV_CODEC_ID_PCM_S64BE:
169 case AV_CODEC_ID_PCM_F64BE:172 case AV_CODEC_ID_PCM_F64BE:
170 ENCODE(int64_t, be64, samples, dst, n, 0, 0)173 ENCODE(int64_t, be64, samples, dst, n, 0, 0)
171 break;174 break;
@@ -181,6 +184,7 @@ static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, · 9 unmodified lines
181 break;184 break;
182 case AV_CODEC_ID_PCM_F64LE:185 case AV_CODEC_ID_PCM_F64LE:
183 case AV_CODEC_ID_PCM_F32LE:186 case AV_CODEC_ID_PCM_F32LE:
187 case AV_CODEC_ID_PCM_S64LE:
184 case AV_CODEC_ID_PCM_S32LE:188 case AV_CODEC_ID_PCM_S32LE:
185 case AV_CODEC_ID_PCM_S16LE:189 case AV_CODEC_ID_PCM_S16LE:
186#endif /* HAVE_BIGENDIAN */190#endif /* HAVE_BIGENDIAN */
@@ -390,6 +394,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data, · 203 unmodified lines
390 }394 }
391 break;395 break;
392#if HAVE_BIGENDIAN396#if HAVE_BIGENDIAN
397 case AV_CODEC_ID_PCM_S64LE:
393 case AV_CODEC_ID_PCM_F64LE:398 case AV_CODEC_ID_PCM_F64LE:
394 DECODE(64, le64, src, samples, n, 0, 0)399 DECODE(64, le64, src, samples, n, 0, 0)
395 break;400 break;
@@ -408,9 +413,11 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data, · 12 unmodified lines
408 break;413 break;
409 case AV_CODEC_ID_PCM_F64BE:414 case AV_CODEC_ID_PCM_F64BE:
410 case AV_CODEC_ID_PCM_F32BE:415 case AV_CODEC_ID_PCM_F32BE:
416 case AV_CODEC_ID_PCM_S64BE:
411 case AV_CODEC_ID_PCM_S32BE:417 case AV_CODEC_ID_PCM_S32BE:
412 case AV_CODEC_ID_PCM_S16BE:418 case AV_CODEC_ID_PCM_S16BE:
413#else419#else
420 case AV_CODEC_ID_PCM_S64BE:
414 case AV_CODEC_ID_PCM_F64BE:421 case AV_CODEC_ID_PCM_F64BE:
415 DECODE(64, be64, src, samples, n, 0, 0)422 DECODE(64, be64, src, samples, n, 0, 0)
416 break;423 break;
@@ -426,6 +433,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data, · 9 unmodified lines
426 break;433 break;
427 case AV_CODEC_ID_PCM_F64LE:434 case AV_CODEC_ID_PCM_F64LE:
428 case AV_CODEC_ID_PCM_F32LE:435 case AV_CODEC_ID_PCM_F32LE:
436 case AV_CODEC_ID_PCM_S64LE:
429 case AV_CODEC_ID_PCM_S32LE:437 case AV_CODEC_ID_PCM_S32LE:
430 case AV_CODEC_ID_PCM_S16LE:438 case AV_CODEC_ID_PCM_S16LE:
431#endif /* HAVE_BIGENDIAN */439#endif /* HAVE_BIGENDIAN */
@@ -568,4 +576,5 @@ PCM_CODEC (PCM_U24LE, AV_SAMPLE_FMT_S32, pcm_u24le, "PCM unsigned · 136 unmodified lines
568PCM_CODEC (PCM_U32BE, AV_SAMPLE_FMT_S32, pcm_u32be, "PCM unsigned 32-bit big-endian");576PCM_CODEC (PCM_U32BE, AV_SAMPLE_FMT_S32, pcm_u32be, "PCM unsigned 32-bit big-endian");
569PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned 32-bit little-endian");577PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned 32-bit little-endian");
570PCM_DECODER(PCM_ZORK, AV_SAMPLE_FMT_U8, pcm_zork, "PCM Zork");578PCM_DECODER(PCM_ZORK, AV_SAMPLE_FMT_U8, pcm_zork, "PCM Zork");
571 579PCM_CODEC (PCM_S64BE, AV_SAMPLE_FMT_S64, pcm_s64be, "PCM signed 64-bit big-endian");
580PCM_CODEC (PCM_S64LE, AV_SAMPLE_FMT_S64, pcm_s64le, "PCM signed 64-bit little-endian");
libavcodec/utils.c+3−0
@@ -3419,6 +3419,8 @@ int av_get_exact_bits_per_sample(enum AVCodecID codec_id) · 3418 unmodified lines
3419 return 32;3419 return 32;
3420 case AV_CODEC_ID_PCM_F64BE:3420 case AV_CODEC_ID_PCM_F64BE:
3421 case AV_CODEC_ID_PCM_F64LE:3421 case AV_CODEC_ID_PCM_F64LE:
3422 case AV_CODEC_ID_PCM_S64BE:
3423 case AV_CODEC_ID_PCM_S64LE:
3422 return 64;3424 return 64;
3423 default:3425 default:
3424 return 0;3426 return 0;
@@ -3436,6 +3438,7 @@ enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be) · 11 unmodified lines
3436 [AV_SAMPLE_FMT_U8P ] = { AV_CODEC_ID_PCM_U8, AV_CODEC_ID_PCM_U8 },3438 [AV_SAMPLE_FMT_U8P ] = { AV_CODEC_ID_PCM_U8, AV_CODEC_ID_PCM_U8 },
3437 [AV_SAMPLE_FMT_S16P] = { AV_CODEC_ID_PCM_S16LE, AV_CODEC_ID_PCM_S16BE },3439 [AV_SAMPLE_FMT_S16P] = { AV_CODEC_ID_PCM_S16LE, AV_CODEC_ID_PCM_S16BE },
3438 [AV_SAMPLE_FMT_S32P] = { AV_CODEC_ID_PCM_S32LE, AV_CODEC_ID_PCM_S32BE },3440 [AV_SAMPLE_FMT_S32P] = { AV_CODEC_ID_PCM_S32LE, AV_CODEC_ID_PCM_S32BE },
3441 [AV_SAMPLE_FMT_S64P] = { AV_CODEC_ID_PCM_S64LE, AV_CODEC_ID_PCM_S64BE },
3439 [AV_SAMPLE_FMT_FLTP] = { AV_CODEC_ID_PCM_F32LE, AV_CODEC_ID_PCM_F32BE },3442 [AV_SAMPLE_FMT_FLTP] = { AV_CODEC_ID_PCM_F32LE, AV_CODEC_ID_PCM_F32BE },
3440 [AV_SAMPLE_FMT_DBLP] = { AV_CODEC_ID_PCM_F64LE, AV_CODEC_ID_PCM_F64BE },3443 [AV_SAMPLE_FMT_DBLP] = { AV_CODEC_ID_PCM_F64LE, AV_CODEC_ID_PCM_F64BE },
3441 };3444 };
libavcodec/version.h+1−1
@@ -28,7 +28,7 @@ · 27 unmodified lines
28#include "libavutil/version.h"28#include "libavutil/version.h"
29 29
30#define LIBAVCODEC_VERSION_MAJOR 5730#define LIBAVCODEC_VERSION_MAJOR 57
31#define LIBAVCODEC_VERSION_MINOR 5331#define LIBAVCODEC_VERSION_MINOR 54
32#define LIBAVCODEC_VERSION_MICRO 10032#define LIBAVCODEC_VERSION_MICRO 100
33 33
34#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \34#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
libavformat/riff.c+1−0
@@ -436,6 +436,7 @@ const AVCodecTag ff_codec_wav_tags[] = { · 435 unmodified lines
436 { AV_CODEC_ID_PCM_U8, 0x0001 },436 { AV_CODEC_ID_PCM_U8, 0x0001 },
437 { AV_CODEC_ID_PCM_S24LE, 0x0001 },437 { AV_CODEC_ID_PCM_S24LE, 0x0001 },
438 { AV_CODEC_ID_PCM_S32LE, 0x0001 },438 { AV_CODEC_ID_PCM_S32LE, 0x0001 },
439 { AV_CODEC_ID_PCM_S64LE, 0x0001 },
439 { AV_CODEC_ID_ADPCM_MS, 0x0002 },440 { AV_CODEC_ID_ADPCM_MS, 0x0002 },
440 { AV_CODEC_ID_PCM_F32LE, 0x0003 },441 { AV_CODEC_ID_PCM_F32LE, 0x0003 },
441 /* must come after f32le in this list */442 /* must come after f32le in this list */
libavformat/utils.c+2−0
@@ -2991,6 +2991,8 @@ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags) · 2990 unmodified lines
2991 return be ? AV_CODEC_ID_PCM_S24BE : AV_CODEC_ID_PCM_S24LE;2991 return be ? AV_CODEC_ID_PCM_S24BE : AV_CODEC_ID_PCM_S24LE;
2992 case 4:2992 case 4:
2993 return be ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE;2993 return be ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE;
2994 case 8:
2995 return be ? AV_CODEC_ID_PCM_S64BE : AV_CODEC_ID_PCM_S64LE;
2994 default:2996 default:
2995 return AV_CODEC_ID_NONE;2997 return AV_CODEC_ID_NONE;
2996 }2998 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t