History

swr: add set_audiodata_fmt() and use it to simplify code

Michael Niedermayer committed 14 years ago

Commit 2d6c29f1 parent 65722e72 files · +11 −11Browse files

Unified · Split

2 files
  1. libswresample/swresample.c +11 −10
  2. libswresample/swresample_internal.h +0 −1
libswresample/swresample.c+11−10
@@ -153,6 +153,10 @@ struct SwrContext *swr_alloc_set_opts(struct SwrContext *s, · 152 unmodified lines
153 return s;153 return s;
154}154}
155 155
156static void set_audiodata_fmt(AudioData *a, enum AVSampleFormat fmt){
157 a->bps = av_get_bytes_per_sample(fmt);
158 a->planar= av_sample_fmt_is_planar(fmt);
159}
156 160
157static void free_temp(AudioData *a){161static void free_temp(AudioData *a){
158 av_free(a->data);162 av_free(a->data);
@@ -191,9 +195,6 @@ int swr_init(struct SwrContext *s){ · 32 unmodified lines
191 195
192 s->flushed = 0;196 s->flushed = 0;
193 197
194 s-> in.planar= av_sample_fmt_is_planar(s-> in_sample_fmt);
195 s->out.planar= av_sample_fmt_is_planar(s->out_sample_fmt);
196
197 if(s-> in_sample_fmt >= AV_SAMPLE_FMT_NB){198 if(s-> in_sample_fmt >= AV_SAMPLE_FMT_NB){
198 av_log(s, AV_LOG_ERROR, "Requested input sample format %d is invalid\n", s->in_sample_fmt);199 av_log(s, AV_LOG_ERROR, "Requested input sample format %d is invalid\n", s->in_sample_fmt);
199 return AVERROR(EINVAL);200 return AVERROR(EINVAL);
@@ -216,6 +217,9 @@ int swr_init(struct SwrContext *s){ · 16 unmodified lines
216 return AVERROR(EINVAL);217 return AVERROR(EINVAL);
217 }218 }
218 219
220 set_audiodata_fmt(&s-> in, s-> in_sample_fmt);
221 set_audiodata_fmt(&s->out, s->out_sample_fmt);
222
219 if (s->out_sample_rate!=s->in_sample_rate || (s->flags & SWR_FLAG_RESAMPLE)){223 if (s->out_sample_rate!=s->in_sample_rate || (s->flags & SWR_FLAG_RESAMPLE)){
220 s->resample = swri_resample_init(s->resample, s->out_sample_rate, s->in_sample_rate, s->filter_size, s->phase_shift, s->linear_interp, s->cutoff, s->int_sample_fmt);224 s->resample = swri_resample_init(s->resample, s->out_sample_rate, s->in_sample_rate, s->filter_size, s->phase_shift, s->linear_interp, s->cutoff, s->int_sample_fmt);
221 }else225 }else
@@ -267,9 +271,6 @@ av_assert0(s->used_ch_count); · 45 unmodified lines
267av_assert0(s->out.ch_count);271av_assert0(s->out.ch_count);
268 s->resample_first= RSC*s->out.ch_count/s->in.ch_count - RSC < s->out_sample_rate/(float)s-> in_sample_rate - 1.0;272 s->resample_first= RSC*s->out.ch_count/s->in.ch_count - RSC < s->out_sample_rate/(float)s-> in_sample_rate - 1.0;
269 273
270 s-> in.bps= av_get_bytes_per_sample(s-> in_sample_fmt);
271 s->int_bps= av_get_bytes_per_sample(s->int_sample_fmt);
272 s->out.bps= av_get_bytes_per_sample(s->out_sample_fmt);
273 s->in_buffer= s->in;274 s->in_buffer= s->in;
274 275
275 if(!s->resample && !s->rematrix && !s->channel_map){276 if(!s->resample && !s->rematrix && !s->channel_map){
@@ -300,12 +301,12 @@ av_assert0(s->out.ch_count); · 24 unmodified lines
300 s->in_buffer.ch_count = s->out.ch_count;301 s->in_buffer.ch_count = s->out.ch_count;
301 }302 }
302 303
303 s->postin.bps = s->midbuf.bps = s->preout.bps = s->int_bps;304 set_audiodata_fmt(&s->postin, s->int_sample_fmt);
304 s->postin.planar = s->midbuf.planar = s->preout.planar = 1;305 set_audiodata_fmt(&s->midbuf, s->int_sample_fmt);
306 set_audiodata_fmt(&s->preout, s->int_sample_fmt);
305 307
306 if(s->resample){308 if(s->resample){
307 s->in_buffer.bps = s->int_bps;309 set_audiodata_fmt(&s->in_buffer, s->int_sample_fmt);
308 s->in_buffer.planar = 1;
309 }310 }
310 311
311 s->dither = s->preout;312 s->dither = s->preout;
libswresample/swresample_internal.h+0−1
@@ -57,7 +57,6 @@ struct SwrContext { · 56 unmodified lines
57 int linear_interp; /**< if 1 then the resampling FIR filter will be linearly interpolated */57 int linear_interp; /**< if 1 then the resampling FIR filter will be linearly interpolated */
58 double cutoff; /**< resampling cutoff frequency. 1.0 corresponds to half the output sample rate */58 double cutoff; /**< resampling cutoff frequency. 1.0 corresponds to half the output sample rate */
59 59
60 int int_bps; ///< internal bytes per sample
61 int resample_first; ///< 1 if resampling must come first, 0 if rematrixing60 int resample_first; ///< 1 if resampling must come first, 0 if rematrixing
62 int rematrix; ///< flag to indicate if rematrixing is needed (basically if input and output layouts mismatch)61 int rematrix; ///< flag to indicate if rematrixing is needed (basically if input and output layouts mismatch)
63 int rematrix_custom; ///< flag to indicate that a custom matrix has been defined62 int rematrix_custom; ///< flag to indicate that a custom matrix has been defined

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t