output_dsp.c

#include <linux/soundcard.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <errno.h>


#include "output_dsp.h"

int output_dsp_init(config_t *config) {
  int dsp_dev, param;
  
  /*if (config->rate != 8000 && config->rate != 16000) {
    fputs("Unsupported bitrate for DSP", stderr);
    exit(EXIT_FAILURE);
  }*/
  
  dsp_dev = open(config->output_device_name, O_WRONLY);
  if (dsp_dev < 0) {
    perror("Opening DSP device");
    exit(EXIT_FAILURE);
  }
  
  param = config->rate;
  if ( ioctl(dsp_dev, SOUND_PCM_WRITE_RATE, &param) < 0 )
    perror("ioctl on dsp device error");
  
  param = 16;
  if ( ioctl(dsp_dev, SOUND_PCM_WRITE_BITS, &param) < 0 )
    perror("ioctl on dsp device error");
  
  param = 1;
  if ( ioctl(dsp_dev, SOUND_PCM_WRITE_CHANNELS, &param) < 0 )
    perror("ioctl on dsp device error");
  
  return dsp_dev;
}

void output_dsp_write(int dsp_dev, signal_t *signal) {
  if ( write(dsp_dev, signal->data, 2*signal->num_of_sample) < 2*signal->num_of_sample )
    fputs("error in write to dsp", stderr);
}

XHTML generated by highlight (http://www.andre-simon.de/) from output_dsp.c



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/inne/other_projects/generator/output_dsp.c) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2014-01-07 19:27:43 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).