view libinterp/dldfcn/player_class.h @ 19534:8bb399569393

Add Octave copyright header block to audio project files * libinterp/dldfcn/__player_audioplayer__.cc, libinterp/dldfcn/__recorder_audiorecorder__.cc, libinterp/dldfcn/audiodevinfo.cc, libinterp/dldfcn/audioinfo.cc, libinterp/dldfcn/audioread.cc, libinterp/dldfcn/audiowrite.cc, libinterp/dldfcn/player_class.cc, libinterp/dldfcn/player_class.h, libinterp/dldfcn/recorder_class.cc, libinterp/dldfcn/recorder_class.h, scripts/audio/@audioplayer/__get_properties__.m, scripts/audio/@audioplayer/audioplayer.m, scripts/audio/@audioplayer/display.m, scripts/audio/@audioplayer/get.m, scripts/audio/@audioplayer/isplaying.m, scripts/audio/@audioplayer/pause.m, scripts/audio/@audioplayer/play.m, scripts/audio/@audioplayer/playblocking.m, scripts/audio/@audioplayer/resume.m, scripts/audio/@audioplayer/set.m, scripts/audio/@audioplayer/stop.m, scripts/audio/@audioplayer/subsasgn.m, scripts/audio/@audioplayer/subsref.m, scripts/audio/@audiorecorder/__get_properties__.m, scripts/audio/@audiorecorder/audiorecorder.m, scripts/audio/@audiorecorder/display.m, scripts/audio/@audiorecorder/get.m, scripts/audio/@audiorecorder/getaudiodata.m, scripts/audio/@audiorecorder/getplayer.m, scripts/audio/@audiorecorder/isrecording.m, scripts/audio/@audiorecorder/pause.m, scripts/audio/@audiorecorder/play.m, scripts/audio/@audiorecorder/record.m, scripts/audio/@audiorecorder/recordblocking.m, scripts/audio/@audiorecorder/resume.m, scripts/audio/@audiorecorder/set.m, scripts/audio/@audiorecorder/stop.m, scripts/audio/@audiorecorder/subsasgn.m, scripts/audio/@audiorecorder/subsref.m: Add Octave copyright header.
author Mike Miller <mtmiller@ieee.org>
date Tue, 01 Oct 2013 23:36:37 -0400
parents b9df6b3fd5ef
children 36a26a131209
line wrap: on
line source

/*

Copyright (C) 2013 Vytautas JanĨauskas

This file is part of Octave.

Octave is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

Octave is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with Octave; see the file COPYING.  If not, see
<http://www.gnu.org/licenses/>.

*/

#ifndef PLAYER_CLASS_H
#define PLAYER_CLASS_H

#include <string>
#include "oct.h"
#include "ov-int32.h"
#include <portaudio.h>

#include "player_class.h"

enum audio_type {INT8, UINT8, INT16, DOUBLE};

class audioplayer : public octave_base_value 
{
public:
    audioplayer();
    ~audioplayer();
    // Overloaded base functions
    double player_value() const { return 0; }
    virtual double scalar_value (bool frc_str_conv = false) const 
    {
        return 0;
    }
    void print (std::ostream& os, bool pr_as_read_syntax = false) const;
    void print_raw (std::ostream& os, bool pr_as_read_syntax) const;
    // Properties
    bool is_constant (void) const { return true;}
    bool is_defined (void) const { return true;}
    bool print_as_scalar (void) const { return true;}

    void init();
    void init_fn();
    void set_y(octave_value y);
    void set_y(octave_function *fn);
    void set_y(std::string fn);
    Matrix &get_y();
    RowVector *get_left();
    RowVector *get_right();
    void set_fs(int fs);
    int get_fs();
    void set_nbits(int nbits);
    int get_nbits();
    void set_id(int id);
    int get_id();
    int get_channels();
    audio_type get_type();

    void set_sample_number(unsigned int sample);
    unsigned int get_sample_number();
    unsigned int get_total_samples();
    void set_end_sample(unsigned int sample);
    unsigned int get_end_sample();
    void reset_end_sample();
    void set_tag(charMatrix tag);
    charMatrix get_tag();
    void set_userdata(octave_value userdata);
    octave_value get_userdata();
    PaStream *get_stream();
    octave_function *octave_callback_function;

    void playblocking();
    void play();
    void pause();
    void resume();
    void stop();
    bool isplaying();
private:
    Matrix y;
    RowVector left;
    RowVector right;
    charMatrix tag;
    octave_value userdata;
    int channels;
    int fs;
    int nbits;
    int id;
    unsigned int sample_number;
    unsigned int end_sample;
    PaStream *stream;
    PaStreamParameters output_parameters;
    audio_type type;
    DECLARE_OCTAVE_ALLOCATOR
    DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
};

#endif // PLAYER_CLASS_H