mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-24 03:39:45 +00:00
Use memcpy() for PCM S16/S32 codecs when codec byte-order matches machine byte-order.
Originally committed as revision 14784 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4c00864f31
commit
38a1c7f2be
@ -172,13 +172,6 @@ static int pcm_encode_frame(AVCodecContext *avctx,
|
||||
}
|
||||
|
||||
switch(avctx->codec->id) {
|
||||
case CODEC_ID_PCM_F32BE:
|
||||
case CODEC_ID_PCM_S32BE:
|
||||
ENCODE(int32_t, be32, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S32LE:
|
||||
ENCODE(int32_t, le32, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_U32LE:
|
||||
ENCODE(uint32_t, le32, samples, dst, n, 0, 0x80000000)
|
||||
break;
|
||||
@ -206,12 +199,6 @@ static int pcm_encode_frame(AVCodecContext *avctx,
|
||||
samples++;
|
||||
}
|
||||
break;
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
ENCODE(int16_t, le16, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
ENCODE(int16_t, be16, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_U16LE:
|
||||
ENCODE(uint16_t, le16, samples, dst, n, 0, 0x8000)
|
||||
break;
|
||||
@ -225,9 +212,30 @@ static int pcm_encode_frame(AVCodecContext *avctx,
|
||||
*dst++ = v - 128;
|
||||
}
|
||||
break;
|
||||
#if WORDS_BIGENDIAN
|
||||
case CODEC_ID_PCM_S32LE:
|
||||
ENCODE(int32_t, le32, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
ENCODE(int16_t, le16, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_F32BE:
|
||||
case CODEC_ID_PCM_S32BE:
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
#else
|
||||
case CODEC_ID_PCM_F32BE:
|
||||
case CODEC_ID_PCM_S32BE:
|
||||
ENCODE(int32_t, be32, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
ENCODE(int16_t, be16, samples, dst, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S32LE:
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
#endif /* WORDS_BIGENDIAN */
|
||||
case CODEC_ID_PCM_U8:
|
||||
memcpy(dst, samples, n);
|
||||
dst += n;
|
||||
memcpy(dst, samples, n*sample_size);
|
||||
dst += n*sample_size;
|
||||
break;
|
||||
case CODEC_ID_PCM_ZORK:
|
||||
for(;n>0;n--) {
|
||||
@ -347,13 +355,6 @@ static int pcm_decode_frame(AVCodecContext *avctx,
|
||||
n = buf_size/sample_size;
|
||||
|
||||
switch(avctx->codec->id) {
|
||||
case CODEC_ID_PCM_F32BE:
|
||||
case CODEC_ID_PCM_S32BE:
|
||||
DECODE(int32_t, be32, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S32LE:
|
||||
DECODE(int32_t, le32, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_U32LE:
|
||||
DECODE(uint32_t, le32, src, samples, n, 0, 0x80000000)
|
||||
break;
|
||||
@ -380,9 +381,6 @@ static int pcm_decode_frame(AVCodecContext *avctx,
|
||||
(ff_reverse[v & 0xff] << 8);
|
||||
}
|
||||
break;
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
DECODE(int16_t, le16, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S16LE_PLANAR:
|
||||
n /= avctx->channels;
|
||||
for(c=0;c<avctx->channels;c++)
|
||||
@ -392,9 +390,6 @@ static int pcm_decode_frame(AVCodecContext *avctx,
|
||||
*samples++ = bytestream_get_le16(&src2[c]);
|
||||
src = src2[avctx->channels-1];
|
||||
break;
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
DECODE(int16_t, be16, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_U16LE:
|
||||
DECODE(uint16_t, le16, src, samples, n, 0, 0x8000)
|
||||
break;
|
||||
@ -408,10 +403,31 @@ static int pcm_decode_frame(AVCodecContext *avctx,
|
||||
}
|
||||
samples= (short*)dstu8;
|
||||
break;
|
||||
#if WORDS_BIGENDIAN
|
||||
case CODEC_ID_PCM_S32LE:
|
||||
DECODE(int32_t, le32, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
DECODE(int16_t, le16, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_F32BE:
|
||||
case CODEC_ID_PCM_S32BE:
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
#else
|
||||
case CODEC_ID_PCM_F32BE:
|
||||
case CODEC_ID_PCM_S32BE:
|
||||
DECODE(int32_t, be32, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
DECODE(int16_t, be16, src, samples, n, 0, 0)
|
||||
break;
|
||||
case CODEC_ID_PCM_S32LE:
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
#endif /* WORDS_BIGENDIAN */
|
||||
case CODEC_ID_PCM_U8:
|
||||
memcpy(samples, src, n);
|
||||
src += n;
|
||||
samples = (short*)((uint8_t*)data + n);
|
||||
memcpy(samples, src, n*sample_size);
|
||||
src += n*sample_size;
|
||||
samples = (short*)((uint8_t*)data + n*sample_size);
|
||||
break;
|
||||
case CODEC_ID_PCM_ZORK:
|
||||
for(;n>0;n--) {
|
||||
|
Loading…
Reference in New Issue
Block a user