root/trunk/libffado/src/libavc/avc_definitions.h

Revision 864, 5.0 kB (checked in by ppalmers, 15 years ago)

update license to GPLv2 or GPLv3 instead of GPLv2 or any later version. Update copyrights to reflect the new year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /*
2  * Copyright (C) 2005-2008 by Daniel Wagner
3  *
4  * This file is part of FFADO
5  * FFADO = Free Firewire (pro-)audio drivers for linux
6  *
7  * FFADO is based upon FreeBoB
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 2 of the License, or
12  * (at your option) version 3 of the License.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21  *
22  */
23
24 #ifndef AVCDEFINITIONS_H
25 #define AVCDEFINITIONS_H
26
27 #include <libavc1394/avc1394.h>
28 #include <ostream>
29
30
31 namespace AVC {
32
33 typedef byte_t ctype_t;
34 typedef byte_t unit_t;
35 typedef byte_t unit_type_t;
36 typedef byte_t subunit_t;
37 typedef byte_t opcode_t;
38 typedef byte_t plug_type_t;
39 typedef byte_t plug_id_t;
40 typedef byte_t reserved_t;
41 typedef byte_t function_block_type_t;
42 typedef byte_t function_block_id_t;
43 typedef byte_t control_attribute_t;
44 typedef byte_t plug_direction_t;
45 typedef byte_t plug_address_mode_t;
46 typedef byte_t status_t;
47 typedef byte_t number_of_channels_t;
48 typedef byte_t stream_format_t;
49 typedef byte_t sampling_frequency_t;
50 typedef byte_t rate_control_t;
51 typedef byte_t number_of_stream_format_infos_t;
52 typedef byte_t nr_of_plugs_t;
53 typedef byte_t subunit_id_t;
54 typedef byte_t subfunction_t;
55 typedef byte_t opcode_t;
56 typedef byte_t page_t;
57 typedef byte_t extension_code_t;
58 typedef byte_t subunit_type_t;
59 typedef byte_t max_subunit_id_t;
60 typedef byte_t nr_of_channels_t;
61 typedef byte_t stream_position_t;
62 typedef byte_t stream_position_location_t;
63 typedef byte_t nr_of_clusters_t;
64 typedef byte_t string_length_t;
65 typedef byte_t cluster_index_t;
66 typedef byte_t port_type_t;
67 typedef byte_t number_of_output_plugs_t;
68 typedef byte_t function_block_type_t;
69 typedef byte_t function_block_id_t;
70 typedef byte_t function_block_special_purpose_t;
71 typedef byte_t no_of_input_plugs_t;
72 typedef byte_t no_of_output_plugs_t;
73 typedef byte_t info_type_t;
74 typedef byte_t audio_channel_number_t;
75 typedef byte_t selector_length_t;
76 typedef byte_t control_selector_t;
77 typedef byte_t control_data_length_t;
78 typedef uint16_t control_data_ext_length_t;
79 typedef uint16_t mixer_level_t;
80 typedef byte_t mixer_programmable_state_t;
81 typedef byte_t input_fb_plug_number_t;
82 typedef byte_t input_audio_channel_number_t;
83 typedef byte_t output_audio_channel_number_t;
84 typedef byte_t status_selector_t;
85
86 typedef quadlet_t company_id_t;
87
88 #define AVC1394_SUBUNIT_AUDIO 1
89 #define AVC1394_SUBUNIT_PRINTER 2
90 #define AVC1394_SUBUNIT_CA 6
91 #define AVC1394_SUBUNIT_PANEL 9
92 #define AVC1394_SUBUNIT_BULLETIN_BOARD 0xA
93 #define AVC1394_SUBUNIT_CAMERA_STORAGE 0xB
94 #define AVC1394_SUBUNIT_MUSIC 0xC
95 #define AVC1394_SUBUNIT_RESERVED 0x1D
96
97 #define AVC1394_SUBUNIT_ID_RESERVED 0x06
98
99 enum ESubunitType {
100     eST_Monitor       = AVC1394_SUBUNIT_VIDEO_MONITOR,
101     eST_Audio         = AVC1394_SUBUNIT_AUDIO,
102     eST_Printer       = AVC1394_SUBUNIT_PRINTER,
103     eST_Disc          = AVC1394_SUBUNIT_DISC_RECORDER,
104     eST_VCR           = AVC1394_SUBUNIT_VCR,
105     eST_Tuner         = AVC1394_SUBUNIT_TUNER,
106     eST_CA            = AVC1394_SUBUNIT_CA,
107     eST_Camera        = AVC1394_SUBUNIT_VIDEO_CAMERA,
108     eST_Panel         = AVC1394_SUBUNIT_PANEL,
109     eST_BulltinBoard  = AVC1394_SUBUNIT_BULLETIN_BOARD,
110     eST_CameraStorage = AVC1394_SUBUNIT_CAMERA_STORAGE,
111     eST_Music         = AVC1394_SUBUNIT_MUSIC,
112     eST_VendorUnique  = AVC1394_SUBUNIT_VENDOR_UNIQUE,
113     eST_Reserved      = AVC1394_SUBUNIT_RESERVED,
114     eST_Extended      = AVC1394_SUBUNIT_EXTENDED,
115     eST_Unit          = AVC1394_SUBUNIT_UNIT,
116 };
117
118 enum ESubunitType byteToSubunitType(byte_t s);
119
120 /**
121  * \brief the possible sampling frequencies
122  */
123 enum ESamplingFrequency {
124     eSF_22050Hz = 0x00,
125     eSF_24000Hz = 0x01,
126     eSF_32000Hz = 0x02,
127     eSF_44100Hz = 0x03,
128     eSF_48000Hz = 0x04,
129     eSF_88200Hz = 0x0A,
130     eSF_96000Hz = 0x05,
131     eSF_176400Hz = 0x06,
132     eSF_192000Hz = 0x07,
133     eSF_AnyLow   = 0x0B,
134     eSF_AnyMid   = 0x0C,
135     eSF_AnyHigh  = 0x0D,
136     eSF_None     = 0x0E,
137     eSF_DontCare = 0x0F,
138 };
139
140 /**
141  * \brief Convert from ESamplingFrequency to an integer
142  * @param freq
143  * @return
144  */
145 int convertESamplingFrequency(ESamplingFrequency freq);
146 /**
147  * \brief Convert from integer to ESamplingFrequency
148  * @param sampleRate
149  * @return
150  */
151 ESamplingFrequency parseSampleRate( int sampleRate );
152
153 std::ostream& operator<<( std::ostream& stream, ESamplingFrequency samplingFrequency );
154
155 /**
156  * \brief Convert from a FDF SFC field value to an integer sample rate
157  * @param fdf fdf sfc field value
158  * @return sample rate
159  */
160 unsigned int fdfSfcToSampleRate(byte_t fdf);
161
162 /**
163  * \brief Convert from an integer sample rate to a78 FDF SFC field value
164  * @param rate integer sample rate
165  * @return fdf sfc field value
166  */
167 byte_t sampleRateToFdfSfc(unsigned int rate);
168
169 }
170
171 #endif // AVCDEFINITIONS_H
Note: See TracBrowser for help on using the browser.