Originally committed as revision 14833 to svn://svn.ffmpeg.org/ffmpeg/trunk
| ... | ... |
@@ -220,6 +220,9 @@ void avcodec_register_all(void) |
| 220 | 220 |
REGISTER_ENCDEC (PCM_ALAW, pcm_alaw); |
| 221 | 221 |
REGISTER_DECODER (PCM_DVD, pcm_dvd); |
| 222 | 222 |
REGISTER_ENCDEC (PCM_F32BE, pcm_f32be); |
| 223 |
+ REGISTER_ENCDEC (PCM_F32LE, pcm_f32le); |
|
| 224 |
+ REGISTER_ENCDEC (PCM_F64BE, pcm_f64be); |
|
| 225 |
+ REGISTER_ENCDEC (PCM_F64LE, pcm_f64le); |
|
| 223 | 226 |
REGISTER_ENCDEC (PCM_MULAW, pcm_mulaw); |
| 224 | 227 |
REGISTER_ENCDEC (PCM_S8, pcm_s8); |
| 225 | 228 |
REGISTER_ENCDEC (PCM_S16BE, pcm_s16be); |
| ... | ... |
@@ -30,7 +30,7 @@ |
| 30 | 30 |
#include "libavutil/avutil.h" |
| 31 | 31 |
|
| 32 | 32 |
#define LIBAVCODEC_VERSION_MAJOR 51 |
| 33 |
-#define LIBAVCODEC_VERSION_MINOR 65 |
|
| 33 |
+#define LIBAVCODEC_VERSION_MINOR 66 |
|
| 34 | 34 |
#define LIBAVCODEC_VERSION_MICRO 0 |
| 35 | 35 |
|
| 36 | 36 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
| ... | ... |
@@ -212,6 +212,9 @@ enum CodecID {
|
| 212 | 212 |
CODEC_ID_PCM_S16LE_PLANAR, |
| 213 | 213 |
CODEC_ID_PCM_DVD, |
| 214 | 214 |
CODEC_ID_PCM_F32BE, |
| 215 |
+ CODEC_ID_PCM_F32LE, |
|
| 216 |
+ CODEC_ID_PCM_F64BE, |
|
| 217 |
+ CODEC_ID_PCM_F64LE, |
|
| 215 | 218 |
|
| 216 | 219 |
/* various ADPCM codecs */ |
| 217 | 220 |
CODEC_ID_ADPCM_IMA_QT= 0x11000, |
| ... | ... |
@@ -158,6 +158,7 @@ static int pcm_encode_frame(AVCodecContext *avctx, |
| 158 | 158 |
uint8_t *srcu8; |
| 159 | 159 |
int16_t *samples_int16_t; |
| 160 | 160 |
int32_t *samples_int32_t; |
| 161 |
+ int64_t *samples_int64_t; |
|
| 161 | 162 |
uint16_t *samples_uint16_t; |
| 162 | 163 |
uint32_t *samples_uint32_t; |
| 163 | 164 |
|
| ... | ... |
@@ -213,16 +214,24 @@ static int pcm_encode_frame(AVCodecContext *avctx, |
| 213 | 213 |
} |
| 214 | 214 |
break; |
| 215 | 215 |
#if WORDS_BIGENDIAN |
| 216 |
+ case CODEC_ID_PCM_F64LE: |
|
| 217 |
+ ENCODE(int64_t, le64, samples, dst, n, 0, 0) |
|
| 218 |
+ break; |
|
| 216 | 219 |
case CODEC_ID_PCM_S32LE: |
| 220 |
+ case CODEC_ID_PCM_F32LE: |
|
| 217 | 221 |
ENCODE(int32_t, le32, samples, dst, n, 0, 0) |
| 218 | 222 |
break; |
| 219 | 223 |
case CODEC_ID_PCM_S16LE: |
| 220 | 224 |
ENCODE(int16_t, le16, samples, dst, n, 0, 0) |
| 221 | 225 |
break; |
| 226 |
+ case CODEC_ID_PCM_F64BE: |
|
| 222 | 227 |
case CODEC_ID_PCM_F32BE: |
| 223 | 228 |
case CODEC_ID_PCM_S32BE: |
| 224 | 229 |
case CODEC_ID_PCM_S16BE: |
| 225 | 230 |
#else |
| 231 |
+ case CODEC_ID_PCM_F64BE: |
|
| 232 |
+ ENCODE(int64_t, be64, samples, dst, n, 0, 0) |
|
| 233 |
+ break; |
|
| 226 | 234 |
case CODEC_ID_PCM_F32BE: |
| 227 | 235 |
case CODEC_ID_PCM_S32BE: |
| 228 | 236 |
ENCODE(int32_t, be32, samples, dst, n, 0, 0) |
| ... | ... |
@@ -230,6 +239,8 @@ static int pcm_encode_frame(AVCodecContext *avctx, |
| 230 | 230 |
case CODEC_ID_PCM_S16BE: |
| 231 | 231 |
ENCODE(int16_t, be16, samples, dst, n, 0, 0) |
| 232 | 232 |
break; |
| 233 |
+ case CODEC_ID_PCM_F64LE: |
|
| 234 |
+ case CODEC_ID_PCM_F32LE: |
|
| 233 | 235 |
case CODEC_ID_PCM_S32LE: |
| 234 | 236 |
case CODEC_ID_PCM_S16LE: |
| 235 | 237 |
#endif /* WORDS_BIGENDIAN */ |
| ... | ... |
@@ -320,6 +331,7 @@ static int pcm_decode_frame(AVCodecContext *avctx, |
| 320 | 320 |
uint8_t *dstu8; |
| 321 | 321 |
int16_t *dst_int16_t; |
| 322 | 322 |
int32_t *dst_int32_t; |
| 323 |
+ int64_t *dst_int64_t; |
|
| 323 | 324 |
uint16_t *dst_uint16_t; |
| 324 | 325 |
uint32_t *dst_uint32_t; |
| 325 | 326 |
|
| ... | ... |
@@ -404,16 +416,24 @@ static int pcm_decode_frame(AVCodecContext *avctx, |
| 404 | 404 |
samples= (short*)dstu8; |
| 405 | 405 |
break; |
| 406 | 406 |
#if WORDS_BIGENDIAN |
| 407 |
+ case CODEC_ID_PCM_F64LE: |
|
| 408 |
+ DECODE(int64_t, le64, src, samples, n, 0, 0) |
|
| 409 |
+ break; |
|
| 407 | 410 |
case CODEC_ID_PCM_S32LE: |
| 411 |
+ case CODEC_ID_PCM_F32LE: |
|
| 408 | 412 |
DECODE(int32_t, le32, src, samples, n, 0, 0) |
| 409 | 413 |
break; |
| 410 | 414 |
case CODEC_ID_PCM_S16LE: |
| 411 | 415 |
DECODE(int16_t, le16, src, samples, n, 0, 0) |
| 412 | 416 |
break; |
| 417 |
+ case CODEC_ID_PCM_F64BE: |
|
| 413 | 418 |
case CODEC_ID_PCM_F32BE: |
| 414 | 419 |
case CODEC_ID_PCM_S32BE: |
| 415 | 420 |
case CODEC_ID_PCM_S16BE: |
| 416 | 421 |
#else |
| 422 |
+ case CODEC_ID_PCM_F64BE: |
|
| 423 |
+ DECODE(int64_t, be64, src, samples, n, 0, 0) |
|
| 424 |
+ break; |
|
| 417 | 425 |
case CODEC_ID_PCM_F32BE: |
| 418 | 426 |
case CODEC_ID_PCM_S32BE: |
| 419 | 427 |
DECODE(int32_t, be32, src, samples, n, 0, 0) |
| ... | ... |
@@ -421,6 +441,8 @@ static int pcm_decode_frame(AVCodecContext *avctx, |
| 421 | 421 |
case CODEC_ID_PCM_S16BE: |
| 422 | 422 |
DECODE(int16_t, be16, src, samples, n, 0, 0) |
| 423 | 423 |
break; |
| 424 |
+ case CODEC_ID_PCM_F64LE: |
|
| 425 |
+ case CODEC_ID_PCM_F32LE: |
|
| 424 | 426 |
case CODEC_ID_PCM_S32LE: |
| 425 | 427 |
case CODEC_ID_PCM_S16LE: |
| 426 | 428 |
#endif /* WORDS_BIGENDIAN */ |
| ... | ... |
@@ -507,6 +529,9 @@ AVCodec name ## _decoder = { \
|
| 507 | 507 |
PCM_CODEC (CODEC_ID_PCM_ALAW, SAMPLE_FMT_S16, pcm_alaw, "A-law PCM"); |
| 508 | 508 |
PCM_CODEC (CODEC_ID_PCM_DVD, SAMPLE_FMT_S16, pcm_dvd, "signed 16|20|24-bit big-endian PCM"); |
| 509 | 509 |
PCM_CODEC (CODEC_ID_PCM_F32BE, SAMPLE_FMT_FLT, pcm_f32be, "32-bit floating point big-endian PCM"); |
| 510 |
+PCM_CODEC (CODEC_ID_PCM_F32LE, SAMPLE_FMT_FLT, pcm_f32le, "32-bit floating point little-endian PCM"); |
|
| 511 |
+PCM_CODEC (CODEC_ID_PCM_F64BE, SAMPLE_FMT_DBL, pcm_f64be, "64-bit floating point big-endian PCM"); |
|
| 512 |
+PCM_CODEC (CODEC_ID_PCM_F64LE, SAMPLE_FMT_DBL, pcm_f64le, "64-bit floating point little-endian PCM"); |
|
| 510 | 513 |
PCM_CODEC (CODEC_ID_PCM_MULAW, SAMPLE_FMT_S16, pcm_mulaw, "mu-law PCM"); |
| 511 | 514 |
PCM_CODEC (CODEC_ID_PCM_S8, SAMPLE_FMT_U8, pcm_s8, "signed 8-bit PCM"); |
| 512 | 515 |
PCM_CODEC (CODEC_ID_PCM_S16BE, SAMPLE_FMT_S16, pcm_s16be, "signed 16-bit big-endian PCM"); |
| ... | ... |
@@ -1158,11 +1158,16 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) |
| 1158 | 1158 |
|
| 1159 | 1159 |
/* for PCM codecs, compute bitrate directly */ |
| 1160 | 1160 |
switch(enc->codec_id) {
|
| 1161 |
+ case CODEC_ID_PCM_F64BE: |
|
| 1162 |
+ case CODEC_ID_PCM_F64LE: |
|
| 1163 |
+ bitrate = enc->sample_rate * enc->channels * 64; |
|
| 1164 |
+ break; |
|
| 1161 | 1165 |
case CODEC_ID_PCM_S32LE: |
| 1162 | 1166 |
case CODEC_ID_PCM_S32BE: |
| 1163 | 1167 |
case CODEC_ID_PCM_U32LE: |
| 1164 | 1168 |
case CODEC_ID_PCM_U32BE: |
| 1165 | 1169 |
case CODEC_ID_PCM_F32BE: |
| 1170 |
+ case CODEC_ID_PCM_F32LE: |
|
| 1166 | 1171 |
bitrate = enc->sample_rate * enc->channels * 32; |
| 1167 | 1172 |
break; |
| 1168 | 1173 |
case CODEC_ID_PCM_S24LE: |
| ... | ... |
@@ -1312,7 +1317,11 @@ int av_get_bits_per_sample(enum CodecID codec_id){
|
| 1312 | 1312 |
case CODEC_ID_PCM_U32BE: |
| 1313 | 1313 |
case CODEC_ID_PCM_U32LE: |
| 1314 | 1314 |
case CODEC_ID_PCM_F32BE: |
| 1315 |
+ case CODEC_ID_PCM_F32LE: |
|
| 1315 | 1316 |
return 32; |
| 1317 |
+ case CODEC_ID_PCM_F64BE: |
|
| 1318 |
+ case CODEC_ID_PCM_F64LE: |
|
| 1319 |
+ return 64; |
|
| 1316 | 1320 |
default: |
| 1317 | 1321 |
return 0; |
| 1318 | 1322 |
} |