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 | FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBL), | 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 | memcpy(*dst, *src, len); | 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 | AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, | 123 | AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, |
| 115 | enum AVSampleFormat in_fmt, | 124 | enum AVSampleFormat in_fmt, |
| @@ -136,8 +145,14 @@ AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, · 20 unmodified lines | |||
| 136 | if (in_fmt == AV_SAMPLE_FMT_U8) | 145 | if (in_fmt == AV_SAMPLE_FMT_U8) |
| 137 | memset(ctx->silence, 0x80, sizeof(ctx->silence)); | 146 | memset(ctx->silence, 0x80, sizeof(ctx->silence)); |
| 138 | 147 | ||
| 139 | if(out_fmt == in_fmt && !ch_map) | 148 | if(out_fmt == in_fmt && !ch_map) { |
| 140 | ctx->simd_f = cpy; | 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 | if(HAVE_YASM && HAVE_MMX) swri_audio_convert_init_x86(ctx, out_fmt, in_fmt, channels); | 157 | if(HAVE_YASM && HAVE_MMX) swri_audio_convert_init_x86(ctx, out_fmt, in_fmt, channels); |
| 143 | 158 | ||