Lines Matching refs:xfer
3 // xfer.c - receiver/transmiter of data frames.
9 #include "xfer.h"
38 int xfer_context_init(struct xfer_context *xfer, enum xfer_type type,
53 assert(xfer);
65 xfer->direction = direction;
66 xfer->type = type;
67 xfer->ops = &entry->data->ops;
69 xfer->private_data = malloc(entry->data->private_size);
70 if (xfer->private_data == NULL)
72 memset(xfer->private_data, 0, entry->data->private_size);
74 err = xfer->ops->init(xfer, direction);
78 err = xfer_options_parse_args(xfer, entry->data, argc, argv);
82 return xfer->ops->validate_opts(xfer);
85 void xfer_context_destroy(struct xfer_context *xfer)
89 assert(xfer);
91 if (!xfer->ops)
94 if (xfer->ops->destroy)
95 xfer->ops->destroy(xfer);
96 if (xfer->private_data)
97 free(xfer->private_data);
99 if (xfer->paths) {
100 for (i = 0; i < xfer->path_count; ++i)
101 free(xfer->paths[i]);
102 free(xfer->paths);
105 xfer->paths = NULL;
107 free(xfer->sample_format_literal);
108 xfer->sample_format_literal = NULL;
110 free(xfer->cntr_format_literal);
111 xfer->cntr_format_literal = NULL;
114 int xfer_context_pre_process(struct xfer_context *xfer,
123 assert(xfer);
130 if (!xfer->ops)
133 if (xfer->direction == SND_PCM_STREAM_CAPTURE) {
135 if (xfer->sample_format != SND_PCM_FORMAT_UNKNOWN)
136 *format = xfer->sample_format;
137 if (xfer->samples_per_frame > 0)
138 *samples_per_frame = xfer->samples_per_frame;
139 if (xfer->frames_per_second > 0)
140 *frames_per_second = xfer->frames_per_second;
141 } else if (xfer->direction == SND_PCM_STREAM_PLAYBACK) {
144 if (*format != xfer->sample_format) {
146 if (xfer->sample_format != SND_PCM_FORMAT_UNKNOWN) {
150 snd_pcm_format_name(xfer->sample_format),
156 if (*samples_per_frame != xfer->samples_per_frame) {
158 if (xfer->samples_per_frame > 0) {
162 xfer->samples_per_frame,
168 if (*frames_per_second != xfer->frames_per_second) {
170 if (xfer->frames_per_second != 8000) {
174 xfer->frames_per_second,
181 err = xfer->ops->pre_process(xfer, format, samples_per_frame,
195 xfer->sample_format = *format;
196 xfer->samples_per_frame = *samples_per_frame;
197 xfer->frames_per_second = *frames_per_second;
199 if (xfer->direction == SND_PCM_STREAM_CAPTURE) {
200 err = xfer_options_fixup_paths(xfer);
205 if (xfer->verbose > 1) {
207 xfer_type_labels[xfer->type]);
225 int xfer_context_process_frames(struct xfer_context *xfer,
230 assert(xfer);
235 if (!xfer->ops)
238 return xfer->ops->process_frames(xfer, frame_count, mapper, cntrs);
241 void xfer_context_pause(struct xfer_context *xfer, bool enable)
243 assert(xfer);
245 if (!xfer->ops)
248 xfer->ops->pause(xfer, enable);
251 void xfer_context_post_process(struct xfer_context *xfer)
253 assert(xfer);
255 if (!xfer->ops)
258 xfer->ops->post_process(xfer);