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
55class BString;
56
57#include "cortex_defs.h"
58__BEGIN_CORTEX_NAMESPACE
59
60class MediaString
61{
62
63public:						// 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
72public:						// 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
99public:						// 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
108public:						// 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
126public:						// 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
133public:						// 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
157public:						// 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
168public:						// 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