1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| do{ int64_t delay = swr_get_delay(swr_ctx, src_rate); dst_nb_samples = av_rescale_rnd(delay+src_nb_samples, dst_rate, src_rate, AV_ROUND_UP); if(dst_nb_samples > max_dst_nb_samples){ av_freep(&dst_data[0]); ret = av_samples_alloc(dst_data, &dst_linesize, dst_nb_channels, dst_nb_samples, dst_sample_fmt, 1); if(ret < 0) break; max_dst_nb_samples = dst_nb_samples; }
ret = swr_convert(swr_ctx, dst_data, dst_nb_samples, NULL,0); if(ret<0){exit(1);} dst_bufsize = av_samples_get_buffer_size(&dst_linesize, dst_nb_channels, ret, dst_sample_fmt, 1); if(dst_bufsize<0){exit(1);} fwrite(dst_data[0],1,dst_bufsize,dst_file); }();
ret = swr_convert(swr_ctx, dst_data, dst_nb_samples, NULL, 0); if (ret < 0) {} dst_bufsize = av_samples_get_buffer_size(&dst_linesize, dst_nb_channels, ret, dst_sample_fmt, 1); if (dst_bufsize < 0) {exit(1);} printf("flush in:%d out:%d\n", 0, ret); fwrite(dst_data[0], 1, dst_bufsize, dst_file);
|