Showing the changes to libswresample (1 of 1 file). Show all
Unified · Split
| @@ -107,9 +107,18 @@ static conv_func_type * const fmt_pair_to_conv_functions[AV_SAMPLE_FMT_NB*AV_SAM · 106 unmodified lines | ||
| 107 | 107 | FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBL), |
| 108 | 108 | }; |
| 109 | 109 | |
| 110 | −static void cpy(uint8_t **dst, const uint8_t **src, int len){ | |
| 110 | +static void cpy1(uint8_t **dst, const uint8_t **src, int len){ | |
| 111 | 111 | memcpy(*dst, *src, len); |
| 112 | 112 | } |
| 113 | +static void cpy2(uint8_t **dst, const uint8_t **src, int len){ | |
| 114 | + memcpy(*dst, *src, 2*len); | |
| 115 | +} | |
| 116 | +static void cpy4(uint8_t **dst, const uint8_t **src, int len){ | |
| 117 | + memcpy(*dst, *src, 4*len); | |
| 118 | +} | |
| 119 | +static void cpy8(uint8_t **dst, const uint8_t **src, int len){ | |
| 120 | + memcpy(*dst, *src, 8*len); | |
| 121 | +} | |
| 113 | 122 | |
| 114 | 123 | AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, |
| 115 | 124 | enum AVSampleFormat in_fmt, |
| @@ -136,8 +145,14 @@ AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, · 20 unmodified lines | ||
| 136 | 145 | if (in_fmt == AV_SAMPLE_FMT_U8) |
| 137 | 146 | memset(ctx->silence, 0x80, sizeof(ctx->silence)); |
| 138 | 147 | |
| 139 | − if(out_fmt == in_fmt && !ch_map) | |
| 140 | − ctx->simd_f = cpy; | |
| 148 | + if(out_fmt == in_fmt && !ch_map) { | |
| 149 | + switch(av_get_bytes_per_sample(in_fmt)){ | |
| 150 | + case 1:ctx->simd_f = cpy1; break; | |
| 151 | + case 2:ctx->simd_f = cpy2; break; | |
| 152 | + case 4:ctx->simd_f = cpy4; break; | |
| 153 | + case 8:ctx->simd_f = cpy8; break; | |
| 154 | + } | |
| 155 | + } | |
| 141 | 156 | |
| 142 | 157 | if(HAVE_YASM && HAVE_MMX) swri_audio_convert_init_x86(ctx, out_fmt, in_fmt, channels); |
| 143 | 158 | |