xref: /haiku/src/apps/cortex/support/MediaString.h (revision e81a954787e50e56a7f06f72705b7859b6ab06d1)
1 /*
2  * Copyright (c) 1999-2000, Eric Moon.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions, and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions, and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * 3. The name of the author may not be used to endorse or promote products
17  *    derived from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
23  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
27  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 
32 // MediaStrings.h (Cortex/Support)
33 //
34 // * PURPOSE
35 //   Provide routines to translate MediaKit objects, values
36 //   and constants into human-readable text
37 //
38 // * HISTORY
39 //   c.lenz		2nov99			Begun
40 //	 c.lenz		11nov99			Format strings are now aware
41 //								of wildcard-fields
42 //	 c.lenz		25dec99			Added functions to retrieve strings
43 //								for single format fields
44 //
45 
46 #ifndef __MediaString_H__
47 #define __MediaString_H__
48 
49 // Interface Kit
50 #include <InterfaceDefs.h>
51 // Media Kit
52 #include <MediaDefs.h>
53 #include <MediaNode.h>
54 
55 class BString;
56 
57 #include "cortex_defs.h"
58 __BEGIN_CORTEX_NAMESPACE
59 
60 class MediaString
61 {
62 
63 public:						// media_node strings
64 
65 	static BString			getStringFor(
66 								node_kind kinds,
67 								bool complete = true);
68 	static BString			getStringFor(
69 								BMediaNode::run_mode runMode,
70 								bool complete = true);
71 
72 public:						// media_format strings
73 
74 	static BString			getStringFor(
75 								const media_format &format,
76 								bool complete = true);
77 	static BString			getStringFor(
78 								media_format_family family,
79 								bool complete = true);
80 	static BString			getStringFor(
81 								media_type type,
82 								bool complete = true);
83 	static BString			getStringFor(
84 								const media_multi_audio_format &format,
85 								bool complete = true);
86 	static BString			getStringFor(
87 								const media_raw_video_format &format,
88 								bool complete = true);
89 	static BString			getStringFor(
90 								const media_encoded_audio_format &format,
91 								bool complete = true);
92 	static BString			getStringFor(
93 								const media_encoded_video_format &format,
94 								bool complete = true);
95 	static BString			getStringFor(
96 								const media_multistream_format &format,
97 								bool complete = true);
98 
99 public:						// media_source / media_destination strings
100 
101 	static BString			getStringFor(
102 								const media_source &source,
103 								bool complete = true);
104 	static BString			getStringFor(
105 								const media_destination &destination,
106 								bool complete = true);
107 
108 public:						// strings for single fields in media_raw_audio_format
109 
110 	static BString			forAudioFormat(
111 								uint32 format,
112 								int32 validBits);
113 	static BString			forAudioFrameRate(
114 								float frameRate);
115 	static BString			forAudioChannelCount(
116 								uint32 channelCount);
117 	static BString			forAudioByteOrder(
118 								uint32 byteOrder);
119 	static BString			forAudioBufferSize(
120 								size_t bufferSize);
121 	static BString			forAudioChannelMask(
122 								uint32 channelMask);
123 	static BString			forAudioMatrixMask(
124 								uint16 matrixMask);
125 
126 public:						// strings for single fields in media_encoded_audio_format
127 
128 	static BString			forAudioBitRate(
129 								float bitRate);
130 	static BString			forAudioFrameSize(
131 								size_t frameSize);
132 
133 public:						// strings for single fields in media_raw_video_format
134 
135 	static BString			forVideoFormat(
136 								color_space format);
137 	static BString			forVideoFieldRate(
138 								float fieldRate,
139 								uint32 interlace);
140 	static BString			forVideoResolution(
141 								uint32 lineWidth,
142 								uint32 lineCount);
143 	static BString			forVideoAspectRatio(
144 								uint16 pixelWidth,
145 								uint16 pixelHeight);
146 	static BString			forVideoOrientation(
147 								uint32 orientation);
148 	static BString			forVideoActiveLines(
149 								uint32 firstActive,
150 								uint32 lastActive);
151 	static BString			forVideoBytesPerRow(
152 								uint32 bytesPerRow);
153 	static BString			forVideoOffset(
154 								uint32 pixelOffset,
155 								uint32 lineOffset);
156 
157 public:						// strings for single fields in media_encoded_video_format
158 
159 	static BString			forVideoBitRate(
160 								float avgBitRate,
161 								float maxBitRate);
162 	static BString			forVideoFrameSize(
163 								size_t frameSize);
164 	static BString			forVideoHistory(
165 								int16 forwardHistory,
166 								int16 backwardHistory);
167 
168 public:						// strings for single fields media_multistream_format
169 
170 	static BString			forMultistreamFormat(
171 								int32 format);
172 	static BString			forMultistreamBitRate(
173 								float avgBitRate,
174 								float maxBitRate);
175 	static BString			forMultistreamChunkSize(
176 								uint32 avgChunkSize,
177 								uint32 maxChunkSize);
178 	static BString			forMultistreamFlags(
179 								uint32 flags);
180 };
181 
182 __END_CORTEX_NAMESPACE
183 #endif /* __MediaStrings_H__ */
184