Adjusted the copyright header, to account for Be Sample Code License and
copyrights. Automatic whitespace cleanup. No functional change. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42635 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,31 +0,0 @@
|
|||||||
----------------------
|
|
||||||
Be Sample Code License
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Copyright 1991-1999, Be Incorporated.
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. The name of the author may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -145,7 +146,7 @@ LogWriter::~LogWriter()
|
|||||||
//
|
//
|
||||||
// This method, called by the client, really just enqueues a message to the writer thread,
|
// This method, called by the client, really just enqueues a message to the writer thread,
|
||||||
// which will deal with it in the HandleMessage() method.
|
// which will deal with it in the HandleMessage() method.
|
||||||
void
|
void
|
||||||
LogWriter::Log(log_what what, const log_message& data)
|
LogWriter::Log(log_what what, const log_message& data)
|
||||||
{
|
{
|
||||||
bigtime_t now = ::system_time();
|
bigtime_t now = ::system_time();
|
||||||
@@ -155,7 +156,7 @@ LogWriter::Log(log_what what, const log_message& data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Enable or disable a particular log_what code's output
|
// Enable or disable a particular log_what code's output
|
||||||
void
|
void
|
||||||
LogWriter::SetEnabled(log_what what, bool enable)
|
LogWriter::SetEnabled(log_what what, bool enable)
|
||||||
{
|
{
|
||||||
if (enable) mFilters.erase(what);
|
if (enable) mFilters.erase(what);
|
||||||
@@ -163,7 +164,7 @@ LogWriter::SetEnabled(log_what what, bool enable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// enabling everything means just clearing out the filter set
|
// enabling everything means just clearing out the filter set
|
||||||
void
|
void
|
||||||
LogWriter::EnableAllMessages()
|
LogWriter::EnableAllMessages()
|
||||||
{
|
{
|
||||||
mFilters.clear();
|
mFilters.clear();
|
||||||
@@ -171,7 +172,7 @@ LogWriter::EnableAllMessages()
|
|||||||
|
|
||||||
// disabling everything is more tedious -- we have to add them all to the
|
// disabling everything is more tedious -- we have to add them all to the
|
||||||
// filter set, one by one
|
// filter set, one by one
|
||||||
void
|
void
|
||||||
LogWriter::DisableAllMessages()
|
LogWriter::DisableAllMessages()
|
||||||
{
|
{
|
||||||
// mFilters.insert(LOG_QUIT); // don't disable our quit messages
|
// mFilters.insert(LOG_QUIT); // don't disable our quit messages
|
||||||
@@ -222,7 +223,7 @@ LogWriter::DisableAllMessages()
|
|||||||
|
|
||||||
// Writer thread's message handling function -- this is where messages are actuall
|
// Writer thread's message handling function -- this is where messages are actuall
|
||||||
// formatted and written to the log file
|
// formatted and written to the log file
|
||||||
void
|
void
|
||||||
LogWriter::HandleMessage(log_what what, const log_message& msg)
|
LogWriter::HandleMessage(log_what what, const log_message& msg)
|
||||||
{
|
{
|
||||||
char buf[256]; // scratch buffer for building logged output
|
char buf[256]; // scratch buffer for building logged output
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -92,7 +93,7 @@ static BParameterWeb* build_parameter_web()
|
|||||||
LoggingConsumer::LoggingConsumer(
|
LoggingConsumer::LoggingConsumer(
|
||||||
const entry_ref& logFile,
|
const entry_ref& logFile,
|
||||||
BMediaAddOn* pAddOn)
|
BMediaAddOn* pAddOn)
|
||||||
|
|
||||||
: BMediaNode("LoggingConsumer"),
|
: BMediaNode("LoggingConsumer"),
|
||||||
BBufferConsumer(B_MEDIA_UNKNOWN_TYPE),
|
BBufferConsumer(B_MEDIA_UNKNOWN_TYPE),
|
||||||
BControllable(),
|
BControllable(),
|
||||||
@@ -135,19 +136,19 @@ LoggingConsumer::~LoggingConsumer()
|
|||||||
// Log message filtering control
|
// Log message filtering control
|
||||||
//
|
//
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::SetEnabled(log_what what, bool enable)
|
LoggingConsumer::SetEnabled(log_what what, bool enable)
|
||||||
{
|
{
|
||||||
mLogger->SetEnabled(what, enable);
|
mLogger->SetEnabled(what, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::EnableAllMessages()
|
LoggingConsumer::EnableAllMessages()
|
||||||
{
|
{
|
||||||
mLogger->EnableAllMessages();
|
mLogger->EnableAllMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::DisableAllMessages()
|
LoggingConsumer::DisableAllMessages()
|
||||||
{
|
{
|
||||||
mLogger->DisableAllMessages();
|
mLogger->DisableAllMessages();
|
||||||
@@ -170,7 +171,7 @@ LoggingConsumer::AddOn(int32 *internal_id) const
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::SetRunMode(run_mode mode)
|
LoggingConsumer::SetRunMode(run_mode mode)
|
||||||
{
|
{
|
||||||
// !!! Need to handle offline mode etc. properly!
|
// !!! Need to handle offline mode etc. properly!
|
||||||
@@ -181,7 +182,7 @@ LoggingConsumer::SetRunMode(run_mode mode)
|
|||||||
BMediaEventLooper::SetRunMode(mode);
|
BMediaEventLooper::SetRunMode(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::Preroll()
|
LoggingConsumer::Preroll()
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -191,7 +192,7 @@ LoggingConsumer::Preroll()
|
|||||||
BMediaEventLooper::Preroll();
|
BMediaEventLooper::Preroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::SetTimeSource(BTimeSource* time_source)
|
LoggingConsumer::SetTimeSource(BTimeSource* time_source)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -201,7 +202,7 @@ LoggingConsumer::SetTimeSource(BTimeSource* time_source)
|
|||||||
BMediaNode::SetTimeSource(time_source);
|
BMediaNode::SetTimeSource(time_source);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::RequestCompleted(const media_request_info &info)
|
LoggingConsumer::RequestCompleted(const media_request_info &info)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -211,7 +212,7 @@ LoggingConsumer::RequestCompleted(const media_request_info &info)
|
|||||||
return BMediaNode::RequestCompleted(info);
|
return BMediaNode::RequestCompleted(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
// e.moon [11jun99; testing add-on]
|
// e.moon [11jun99; testing add-on]
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::DeleteHook(BMediaNode* pNode) {
|
LoggingConsumer::DeleteHook(BMediaNode* pNode) {
|
||||||
PRINT(("LoggingConsumer::DeleteHook(%p)\n", pNode));
|
PRINT(("LoggingConsumer::DeleteHook(%p)\n", pNode));
|
||||||
@@ -225,7 +226,7 @@ LoggingConsumer::DeleteHook(BMediaNode* pNode) {
|
|||||||
// BControllable methods
|
// BControllable methods
|
||||||
//
|
//
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::GetParameterValue(int32 id, bigtime_t* last_change, void* value, size_t* ioSize)
|
LoggingConsumer::GetParameterValue(int32 id, bigtime_t* last_change, void* value, size_t* ioSize)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -266,7 +267,7 @@ LoggingConsumer::GetParameterValue(int32 id, bigtime_t* last_change, void* value
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::SetParameterValue(int32 id, bigtime_t performance_time, const void* value, size_t size)
|
LoggingConsumer::SetParameterValue(int32 id, bigtime_t performance_time, const void* value, size_t size)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -298,7 +299,7 @@ LoggingConsumer::SetParameterValue(int32 id, bigtime_t performance_time, const v
|
|||||||
// BBufferConsumer methods
|
// BBufferConsumer methods
|
||||||
//
|
//
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::HandleMessage(int32 message, const void *data, size_t size)
|
LoggingConsumer::HandleMessage(int32 message, const void *data, size_t size)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -315,7 +316,7 @@ LoggingConsumer::HandleMessage(int32 message, const void *data, size_t size)
|
|||||||
|
|
||||||
// all of these next methods are pure virtual in BBufferConsumer
|
// all of these next methods are pure virtual in BBufferConsumer
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::AcceptFormat(const media_destination& dest, media_format* format)
|
LoggingConsumer::AcceptFormat(const media_destination& dest, media_format* format)
|
||||||
{
|
{
|
||||||
char formatStr[256];
|
char formatStr[256];
|
||||||
@@ -334,14 +335,14 @@ LoggingConsumer::AcceptFormat(const media_destination& dest, media_format* forma
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::GetNextInput(int32* cookie, media_input* out_input)
|
LoggingConsumer::GetNextInput(int32* cookie, media_input* out_input)
|
||||||
{
|
{
|
||||||
// we have a single hardcoded input that can accept any kind of media data
|
// we have a single hardcoded input that can accept any kind of media data
|
||||||
if (0 == *cookie)
|
if (0 == *cookie)
|
||||||
{
|
{
|
||||||
mInput.format.type = B_MEDIA_UNKNOWN_TYPE; // accept any format
|
mInput.format.type = B_MEDIA_UNKNOWN_TYPE; // accept any format
|
||||||
|
|
||||||
*out_input = mInput;
|
*out_input = mInput;
|
||||||
*cookie = 1;
|
*cookie = 1;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -349,14 +350,14 @@ LoggingConsumer::GetNextInput(int32* cookie, media_input* out_input)
|
|||||||
else return B_BAD_INDEX;
|
else return B_BAD_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::DisposeInputCookie(int32 /*cookie*/ )
|
LoggingConsumer::DisposeInputCookie(int32 /*cookie*/ )
|
||||||
{
|
{
|
||||||
// we don't use any kind of state or extra storage for iterating over our
|
// we don't use any kind of state or extra storage for iterating over our
|
||||||
// inputs, so we don't have to do any special disposal of input cookies.
|
// inputs, so we don't have to do any special disposal of input cookies.
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::BufferReceived(BBuffer* buffer)
|
LoggingConsumer::BufferReceived(BBuffer* buffer)
|
||||||
{
|
{
|
||||||
bigtime_t bufferStart = buffer->Header()->start_time;
|
bigtime_t bufferStart = buffer->Header()->start_time;
|
||||||
@@ -393,7 +394,7 @@ LoggingConsumer::BufferReceived(BBuffer* buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::ProducerDataStatus(const media_destination& for_whom, int32 status, bigtime_t at_performance_time)
|
LoggingConsumer::ProducerDataStatus(const media_destination& for_whom, int32 status, bigtime_t at_performance_time)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -409,7 +410,7 @@ LoggingConsumer::ProducerDataStatus(const media_destination& for_whom, int32 sta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::GetLatencyFor(const media_destination& for_whom, bigtime_t* out_latency, media_node_id* out_timesource)
|
LoggingConsumer::GetLatencyFor(const media_destination& for_whom, bigtime_t* out_latency, media_node_id* out_timesource)
|
||||||
{
|
{
|
||||||
// make sure this is one of my valid inputs
|
// make sure this is one of my valid inputs
|
||||||
@@ -422,7 +423,7 @@ LoggingConsumer::GetLatencyFor(const media_destination& for_whom, bigtime_t* out
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::Connected(
|
LoggingConsumer::Connected(
|
||||||
const media_source& producer,
|
const media_source& producer,
|
||||||
const media_destination& where,
|
const media_destination& where,
|
||||||
@@ -454,7 +455,7 @@ LoggingConsumer::Connected(
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::Disconnected(
|
LoggingConsumer::Disconnected(
|
||||||
const media_source& producer,
|
const media_source& producer,
|
||||||
const media_destination& where)
|
const media_destination& where)
|
||||||
@@ -467,7 +468,7 @@ LoggingConsumer::Disconnected(
|
|||||||
memset(&mInput, 0, sizeof(mInput));
|
memset(&mInput, 0, sizeof(mInput));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::FormatChanged(
|
LoggingConsumer::FormatChanged(
|
||||||
const media_source& producer,
|
const media_source& producer,
|
||||||
const media_destination& consumer,
|
const media_destination& consumer,
|
||||||
@@ -481,7 +482,7 @@ LoggingConsumer::FormatChanged(
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
LoggingConsumer::SeekTagRequested(
|
LoggingConsumer::SeekTagRequested(
|
||||||
const media_destination& destination,
|
const media_destination& destination,
|
||||||
bigtime_t in_target_time,
|
bigtime_t in_target_time,
|
||||||
@@ -501,7 +502,7 @@ LoggingConsumer::SeekTagRequested(
|
|||||||
// BMediaEventLooper virtual methods
|
// BMediaEventLooper virtual methods
|
||||||
//
|
//
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::NodeRegistered()
|
LoggingConsumer::NodeRegistered()
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -523,7 +524,7 @@ LoggingConsumer::NodeRegistered()
|
|||||||
strcpy(mInput.name, "Logged input");
|
strcpy(mInput.name, "Logged input");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::Start(bigtime_t performance_time)
|
LoggingConsumer::Start(bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
PRINT(("LoggingConsumer::Start(%Ld): now %Ld\n", performance_time, TimeSource()->Now()));
|
PRINT(("LoggingConsumer::Start(%Ld): now %Ld\n", performance_time, TimeSource()->Now()));
|
||||||
@@ -535,7 +536,7 @@ LoggingConsumer::Start(bigtime_t performance_time)
|
|||||||
BMediaEventLooper::Start(performance_time);
|
BMediaEventLooper::Start(performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::Stop(bigtime_t performance_time, bool immediate)
|
LoggingConsumer::Stop(bigtime_t performance_time, bool immediate)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -545,7 +546,7 @@ LoggingConsumer::Stop(bigtime_t performance_time, bool immediate)
|
|||||||
BMediaEventLooper::Stop(performance_time, immediate);
|
BMediaEventLooper::Stop(performance_time, immediate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
LoggingConsumer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -555,7 +556,7 @@ LoggingConsumer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
|||||||
BMediaEventLooper::Seek(media_time, performance_time);
|
BMediaEventLooper::Seek(media_time, performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
LoggingConsumer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -565,7 +566,7 @@ LoggingConsumer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
|||||||
BMediaEventLooper::TimeWarp(at_real_time, to_performance_time);
|
BMediaEventLooper::TimeWarp(at_real_time, to_performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoggingConsumer::HandleEvent(const media_timed_event *event, bigtime_t /* lateness */, bool /* realTimeEvent */)
|
LoggingConsumer::HandleEvent(const media_timed_event *event, bigtime_t /* lateness */, bool /* realTimeEvent */)
|
||||||
{
|
{
|
||||||
log_message logMsg;
|
log_message logMsg;
|
||||||
@@ -628,12 +629,12 @@ LoggingConsumer::HandleEvent(const media_timed_event *event, bigtime_t /* latene
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
// !!! change to B_PARAMETER as soon as it's available
|
// !!! change to B_PARAMETER as soon as it's available
|
||||||
|
|
||||||
// +++++ e.moon [16jun99]
|
// +++++ e.moon [16jun99]
|
||||||
// !!! this can't be right: the parameter value is accessed by the pointer
|
// !!! this can't be right: the parameter value is accessed by the pointer
|
||||||
// originally passed to SetParameterValue(). there's no guarantee that
|
// originally passed to SetParameterValue(). there's no guarantee that
|
||||||
// value's still valid, is there?
|
// value's still valid, is there?
|
||||||
|
|
||||||
case BTimedEventQueue::B_USER_EVENT:
|
case BTimedEventQueue::B_USER_EVENT:
|
||||||
{
|
{
|
||||||
size_t dataSize = size_t(event->data);
|
size_t dataSize = size_t(event->data);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -138,7 +139,7 @@ public:
|
|||||||
/* the format; you should not ask him about it in here. */
|
/* the format; you should not ask him about it in here. */
|
||||||
status_t FormatChanged(
|
status_t FormatChanged(
|
||||||
const media_source& producer,
|
const media_source& producer,
|
||||||
const media_destination& consumer,
|
const media_destination& consumer,
|
||||||
int32 change_tag,
|
int32 change_tag,
|
||||||
const media_format& format);
|
const media_format& format);
|
||||||
|
|
||||||
@@ -149,7 +150,7 @@ public:
|
|||||||
status_t SeekTagRequested(
|
status_t SeekTagRequested(
|
||||||
const media_destination& destination,
|
const media_destination& destination,
|
||||||
bigtime_t in_target_time,
|
bigtime_t in_target_time,
|
||||||
uint32 in_flags,
|
uint32 in_flags,
|
||||||
media_seek_tag* out_seek_tag,
|
media_seek_tag* out_seek_tag,
|
||||||
bigtime_t* out_tagged_time,
|
bigtime_t* out_tagged_time,
|
||||||
uint32* out_flags);
|
uint32* out_flags);
|
||||||
@@ -181,7 +182,7 @@ private:
|
|||||||
bigtime_t mLastLatencyChange; // when did we last change our latency?
|
bigtime_t mLastLatencyChange; // when did we last change our latency?
|
||||||
bigtime_t mLastSpinChange; // when did we last change our CPU usage?
|
bigtime_t mLastSpinChange; // when did we last change our CPU usage?
|
||||||
bigtime_t mLastPrioChange; // when did we last change thread priority?
|
bigtime_t mLastPrioChange; // when did we last change thread priority?
|
||||||
|
|
||||||
// host addon
|
// host addon
|
||||||
// [11jun99] e.moon
|
// [11jun99] e.moon
|
||||||
BMediaAddOn* m_pAddOn;
|
BMediaAddOn* m_pAddOn;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -57,7 +58,7 @@ LoggingConsumerAddOn::~LoggingConsumerAddOn() {
|
|||||||
}
|
}
|
||||||
LoggingConsumerAddOn::LoggingConsumerAddOn(image_id image) :
|
LoggingConsumerAddOn::LoggingConsumerAddOn(image_id image) :
|
||||||
BMediaAddOn(image) {}
|
BMediaAddOn(image) {}
|
||||||
|
|
||||||
// -------------------------------------------------------- //
|
// -------------------------------------------------------- //
|
||||||
// BMediaAddOn impl
|
// BMediaAddOn impl
|
||||||
// -------------------------------------------------------- //
|
// -------------------------------------------------------- //
|
||||||
@@ -66,7 +67,7 @@ status_t LoggingConsumerAddOn::InitCheck(
|
|||||||
const char** out_failure_text) {
|
const char** out_failure_text) {
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 LoggingConsumerAddOn::CountFlavors() {
|
int32 LoggingConsumerAddOn::CountFlavors() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -76,7 +77,7 @@ status_t LoggingConsumerAddOn::GetFlavorAt(
|
|||||||
const flavor_info** out_info) {
|
const flavor_info** out_info) {
|
||||||
if(n)
|
if(n)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
flavor_info* pInfo = new flavor_info;
|
flavor_info* pInfo = new flavor_info;
|
||||||
pInfo->internal_id = n;
|
pInfo->internal_id = n;
|
||||||
pInfo->name = "LoggingConsumer";
|
pInfo->name = "LoggingConsumer";
|
||||||
@@ -87,7 +88,7 @@ status_t LoggingConsumerAddOn::GetFlavorAt(
|
|||||||
pInfo->kinds = B_BUFFER_CONSUMER | B_CONTROLLABLE;
|
pInfo->kinds = B_BUFFER_CONSUMER | B_CONTROLLABLE;
|
||||||
pInfo->flavor_flags = 0;
|
pInfo->flavor_flags = 0;
|
||||||
pInfo->possible_count = 0;
|
pInfo->possible_count = 0;
|
||||||
|
|
||||||
pInfo->in_format_count = 1;
|
pInfo->in_format_count = 1;
|
||||||
media_format* pFormat = new media_format;
|
media_format* pFormat = new media_format;
|
||||||
pFormat->type = B_MEDIA_UNKNOWN_TYPE;
|
pFormat->type = B_MEDIA_UNKNOWN_TYPE;
|
||||||
@@ -95,8 +96,8 @@ status_t LoggingConsumerAddOn::GetFlavorAt(
|
|||||||
|
|
||||||
pInfo->out_format_count = 0;
|
pInfo->out_format_count = 0;
|
||||||
pInfo->out_formats = 0;
|
pInfo->out_formats = 0;
|
||||||
|
|
||||||
|
|
||||||
*out_info = pInfo;
|
*out_info = pInfo;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -109,7 +110,7 @@ BMediaNode* LoggingConsumerAddOn::InstantiateNodeFor(
|
|||||||
// initialize log file
|
// initialize log file
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
get_ref_for_path(g_pLogPath, &ref);
|
get_ref_for_path(g_pLogPath, &ref);
|
||||||
LoggingConsumer* pNode = new LoggingConsumer(ref, this);
|
LoggingConsumer* pNode = new LoggingConsumer(ref, this);
|
||||||
|
|
||||||
// trim down the log's verbosity a touch
|
// trim down the log's verbosity a touch
|
||||||
pNode->SetEnabled(LOG_HANDLE_EVENT, false);
|
pNode->SetEnabled(LOG_HANDLE_EVENT, false);
|
||||||
@@ -120,7 +121,7 @@ BMediaNode* LoggingConsumerAddOn::InstantiateNodeFor(
|
|||||||
status_t LoggingConsumerAddOn::GetConfigurationFor(
|
status_t LoggingConsumerAddOn::GetConfigurationFor(
|
||||||
BMediaNode* your_node,
|
BMediaNode* your_node,
|
||||||
BMessage* into_message) {
|
BMessage* into_message) {
|
||||||
|
|
||||||
// no config yet
|
// no config yet
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -46,11 +47,11 @@
|
|||||||
class LoggingConsumerAddOn :
|
class LoggingConsumerAddOn :
|
||||||
public BMediaAddOn {
|
public BMediaAddOn {
|
||||||
typedef BMediaAddOn _inherited;
|
typedef BMediaAddOn _inherited;
|
||||||
|
|
||||||
public: // ctor/dtor
|
public: // ctor/dtor
|
||||||
virtual ~LoggingConsumerAddOn();
|
virtual ~LoggingConsumerAddOn();
|
||||||
explicit LoggingConsumerAddOn(image_id image);
|
explicit LoggingConsumerAddOn(image_id image);
|
||||||
|
|
||||||
public: // BMediaAddOn impl
|
public: // BMediaAddOn impl
|
||||||
virtual status_t InitCheck(
|
virtual status_t InitCheck(
|
||||||
const char** out_failure_text);
|
const char** out_failure_text);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -32,7 +33,7 @@
|
|||||||
// LoggingConsumerApp.cpp
|
// LoggingConsumerApp.cpp
|
||||||
//
|
//
|
||||||
// HISTORY
|
// HISTORY
|
||||||
// [email protected] 11june99
|
// [email protected] 11june99
|
||||||
// [origin: Be Developer Newsletter III.18: 5may99]
|
// [origin: Be Developer Newsletter III.18: 5may99]
|
||||||
|
|
||||||
#include "NodeHarnessApp.h"
|
#include "NodeHarnessApp.h"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -39,7 +40,7 @@ NodeHarnessApp::NodeHarnessApp(const char *signature)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NodeHarnessApp::ReadyToRun()
|
NodeHarnessApp::ReadyToRun()
|
||||||
{
|
{
|
||||||
BWindow* win = new NodeHarnessWin(BRect(100, 200, 210, 330), "NodeLogger");
|
BWindow* win = new NodeHarnessWin(BRect(100, 200, 210, 330), "NodeLogger");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -98,14 +99,14 @@ NodeHarnessWin::~NodeHarnessWin()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NodeHarnessWin::Quit()
|
NodeHarnessWin::Quit()
|
||||||
{
|
{
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
BWindow::Quit();
|
BWindow::Quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NodeHarnessWin::MessageReceived(BMessage *msg)
|
NodeHarnessWin::MessageReceived(BMessage *msg)
|
||||||
{
|
{
|
||||||
status_t err;
|
status_t err;
|
||||||
@@ -199,7 +200,7 @@ NodeHarnessWin::MessageReceived(BMessage *msg)
|
|||||||
bigtime_t latency;
|
bigtime_t latency;
|
||||||
r->GetLatencyFor(mConnection.producer, &latency);
|
r->GetLatencyFor(mConnection.producer, &latency);
|
||||||
printf("Setting producer run mode latency to %Ld\n", latency);
|
printf("Setting producer run mode latency to %Ld\n", latency);
|
||||||
r->SetProducerRunModeDelay(mConnection.producer, latency + 6000);
|
r->SetProducerRunModeDelay(mConnection.producer, latency + 6000);
|
||||||
|
|
||||||
// preroll first, to be a good citizen
|
// preroll first, to be a good citizen
|
||||||
r->PrerollNode(mConnection.consumer);
|
r->PrerollNode(mConnection.consumer);
|
||||||
@@ -239,7 +240,7 @@ NodeHarnessWin::MessageReceived(BMessage *msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Private routines
|
// Private routines
|
||||||
void
|
void
|
||||||
NodeHarnessWin::StopNodes()
|
NodeHarnessWin::StopNodes()
|
||||||
{
|
{
|
||||||
mStartButton->SetEnabled(true);
|
mStartButton->SetEnabled(true);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1991-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
----------------------
|
|
||||||
Be Sample Code License
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Copyright 1991-1999, Be Incorporated.
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. The name of the author may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -29,13 +30,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
NodeHarnessApp.cpp
|
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "NodeHarnessApp.h"
|
#include "NodeHarnessApp.h"
|
||||||
#include "NodeHarnessWin.h"
|
#include "NodeHarnessWin.h"
|
||||||
|
|
||||||
@@ -44,7 +38,7 @@ NodeHarnessApp::NodeHarnessApp(const char *signature)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NodeHarnessApp::ReadyToRun()
|
NodeHarnessApp::ReadyToRun()
|
||||||
{
|
{
|
||||||
BWindow* win = new NodeHarnessWin(BRect(100, 200, 210, 330), "ToneProducer");
|
BWindow* win = new NodeHarnessWin(BRect(100, 200, 210, 330), "ToneProducer");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -29,13 +30,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
NodeHarnessApp.h
|
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef NodeHarnessApp_H
|
#ifndef NodeHarnessApp_H
|
||||||
#define NodeHarnessApp_H 1
|
#define NodeHarnessApp_H 1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -29,13 +30,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
NodeHarnessWin.cpp
|
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "NodeHarnessWin.h"
|
#include "NodeHarnessWin.h"
|
||||||
#include "ToneProducer.h"
|
#include "ToneProducer.h"
|
||||||
#include <app/Application.h>
|
#include <app/Application.h>
|
||||||
@@ -83,7 +77,7 @@ NodeHarnessWin::NodeHarnessWin(BRect frame, const char *title)
|
|||||||
mStopButton = new BButton(r, "Stop", "Stop", new BMessage(BUTTON_STOP));
|
mStopButton = new BButton(r, "Stop", "Stop", new BMessage(BUTTON_STOP));
|
||||||
mStopButton->SetEnabled(false);
|
mStopButton->SetEnabled(false);
|
||||||
AddChild(mStopButton);
|
AddChild(mStopButton);
|
||||||
|
|
||||||
// e.moon 2jun99: create the node
|
// e.moon 2jun99: create the node
|
||||||
BMediaRoster* roster = BMediaRoster::Roster();
|
BMediaRoster* roster = BMediaRoster::Roster();
|
||||||
mToneNode = new ToneProducer();
|
mToneNode = new ToneProducer();
|
||||||
@@ -120,14 +114,14 @@ NodeHarnessWin::~NodeHarnessWin()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NodeHarnessWin::Quit()
|
NodeHarnessWin::Quit()
|
||||||
{
|
{
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
BWindow::Quit();
|
BWindow::Quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NodeHarnessWin::MessageReceived(BMessage *msg)
|
NodeHarnessWin::MessageReceived(BMessage *msg)
|
||||||
{
|
{
|
||||||
status_t err;
|
status_t err;
|
||||||
@@ -176,7 +170,7 @@ NodeHarnessWin::MessageReceived(BMessage *msg)
|
|||||||
|
|
||||||
// got the endpoints; now we connect it!
|
// got the endpoints; now we connect it!
|
||||||
media_format format;
|
media_format format;
|
||||||
format.type = B_MEDIA_RAW_AUDIO;
|
format.type = B_MEDIA_RAW_AUDIO;
|
||||||
format.u.raw_audio = media_raw_audio_format::wildcard;
|
format.u.raw_audio = media_raw_audio_format::wildcard;
|
||||||
err = r->Connect(soundOutput.source, mixerInput.destination, &format, &soundOutput, &mixerInput);
|
err = r->Connect(soundOutput.source, mixerInput.destination, &format, &soundOutput, &mixerInput);
|
||||||
ErrorCheck(err, "unable to connect nodes");
|
ErrorCheck(err, "unable to connect nodes");
|
||||||
@@ -228,7 +222,7 @@ NodeHarnessWin::MessageReceived(BMessage *msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Private routines
|
// Private routines
|
||||||
void
|
void
|
||||||
NodeHarnessWin::StopNodes()
|
NodeHarnessWin::StopNodes()
|
||||||
{
|
{
|
||||||
mStartButton->SetEnabled(true);
|
mStartButton->SetEnabled(true);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -29,13 +30,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
NodeHarnessWin.h
|
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef NodeHarnessWin_H
|
#ifndef NodeHarnessWin_H
|
||||||
#define NodeHarnessWin_H 1
|
#define NodeHarnessWin_H 1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -32,9 +33,6 @@
|
|||||||
/*
|
/*
|
||||||
ToneProducer.cpp
|
ToneProducer.cpp
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
|
|
||||||
NOTE: to compile this code under Genki beta releases, do a search-
|
NOTE: to compile this code under Genki beta releases, do a search-
|
||||||
and-replace to change "B_PARAMETER" to "B_USER_EVENT+1"
|
and-replace to change "B_PARAMETER" to "B_USER_EVENT+1"
|
||||||
*/
|
*/
|
||||||
@@ -150,7 +148,7 @@ ToneProducer::AddOn(int32 *internal_id) const
|
|||||||
//#pragma mark -
|
//#pragma mark -
|
||||||
|
|
||||||
// BControllable methods
|
// BControllable methods
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::GetParameterValue(int32 id, bigtime_t* last_change, void* value, size_t* ioSize)
|
ToneProducer::GetParameterValue(int32 id, bigtime_t* last_change, void* value, size_t* ioSize)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::GetParameterValue\n");
|
FPRINTF(stderr, "ToneProducer::GetParameterValue\n");
|
||||||
@@ -191,7 +189,7 @@ ToneProducer::GetParameterValue(int32 id, bigtime_t* last_change, void* value, s
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::SetParameterValue(int32 id, bigtime_t performance_time, const void* value, size_t size)
|
ToneProducer::SetParameterValue(int32 id, bigtime_t performance_time, const void* value, size_t size)
|
||||||
{
|
{
|
||||||
switch (id)
|
switch (id)
|
||||||
@@ -224,14 +222,14 @@ status_t ToneProducer::StartControlPanel(
|
|||||||
if(pMessenger && pMessenger->IsValid()) {
|
if(pMessenger && pMessenger->IsValid()) {
|
||||||
PRINT(("\tgot valid control panel\n"));
|
PRINT(("\tgot valid control panel\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#pragma mark -
|
//#pragma mark -
|
||||||
|
|
||||||
// BBufferProducer methods
|
// BBufferProducer methods
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::FormatSuggestionRequested(media_type type, int32 /*quality*/, media_format* format)
|
ToneProducer::FormatSuggestionRequested(media_type type, int32 /*quality*/, media_format* format)
|
||||||
{
|
{
|
||||||
// FormatSuggestionRequested() is not necessarily part of the format negotiation
|
// FormatSuggestionRequested() is not necessarily part of the format negotiation
|
||||||
@@ -256,7 +254,7 @@ ToneProducer::FormatSuggestionRequested(media_type type, int32 /*quality*/, medi
|
|||||||
else return B_OK;
|
else return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::FormatProposal(const media_source& output, media_format* format)
|
ToneProducer::FormatProposal(const media_source& output, media_format* format)
|
||||||
{
|
{
|
||||||
// FormatProposal() is the first stage in the BMediaRoster::Connect() process. We hand
|
// FormatProposal() is the first stage in the BMediaRoster::Connect() process. We hand
|
||||||
@@ -272,7 +270,7 @@ ToneProducer::FormatProposal(const media_source& output, media_format* format)
|
|||||||
|
|
||||||
// we only support floating-point raw audio, so we always return that, but we
|
// we only support floating-point raw audio, so we always return that, but we
|
||||||
// supply an error code depending on whether we found the proposal acceptable.
|
// supply an error code depending on whether we found the proposal acceptable.
|
||||||
|
|
||||||
media_type requestedType = format->type;
|
media_type requestedType = format->type;
|
||||||
*format = mPreferredFormat;
|
*format = mPreferredFormat;
|
||||||
if ((requestedType != B_MEDIA_UNKNOWN_TYPE) && (requestedType != B_MEDIA_RAW_AUDIO))
|
if ((requestedType != B_MEDIA_UNKNOWN_TYPE) && (requestedType != B_MEDIA_RAW_AUDIO))
|
||||||
@@ -283,7 +281,7 @@ ToneProducer::FormatProposal(const media_source& output, media_format* format)
|
|||||||
else return B_OK; // raw audio or wildcard type, either is okay by us
|
else return B_OK; // raw audio or wildcard type, either is okay by us
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::FormatChangeRequested(const media_source& source, const media_destination& destination, media_format* io_format, int32* _deprecated_)
|
ToneProducer::FormatChangeRequested(const media_source& source, const media_destination& destination, media_format* io_format, int32* _deprecated_)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::FormatChangeRequested\n");
|
FPRINTF(stderr, "ToneProducer::FormatChangeRequested\n");
|
||||||
@@ -292,7 +290,7 @@ ToneProducer::FormatChangeRequested(const media_source& source, const media_dest
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::GetNextOutput(int32* cookie, media_output* out_output)
|
ToneProducer::GetNextOutput(int32* cookie, media_output* out_output)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::GetNextOutput\n");
|
FPRINTF(stderr, "ToneProducer::GetNextOutput\n");
|
||||||
@@ -309,7 +307,7 @@ ToneProducer::GetNextOutput(int32* cookie, media_output* out_output)
|
|||||||
else return B_BAD_INDEX;
|
else return B_BAD_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::DisposeOutputCookie(int32 cookie)
|
ToneProducer::DisposeOutputCookie(int32 cookie)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::DisposeOutputCookie\n");
|
FPRINTF(stderr, "ToneProducer::DisposeOutputCookie\n");
|
||||||
@@ -318,7 +316,7 @@ ToneProducer::DisposeOutputCookie(int32 cookie)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::SetBufferGroup(const media_source& for_source, BBufferGroup* newGroup)
|
ToneProducer::SetBufferGroup(const media_source& for_source, BBufferGroup* newGroup)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::SetBufferGroup\n");
|
FPRINTF(stderr, "ToneProducer::SetBufferGroup\n");
|
||||||
@@ -353,7 +351,7 @@ ToneProducer::SetBufferGroup(const media_source& for_source, BBufferGroup* newGr
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::GetLatency(bigtime_t* out_latency)
|
ToneProducer::GetLatency(bigtime_t* out_latency)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::GetLatency\n");
|
FPRINTF(stderr, "ToneProducer::GetLatency\n");
|
||||||
@@ -363,7 +361,7 @@ ToneProducer::GetLatency(bigtime_t* out_latency)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::PrepareToConnect(const media_source& what, const media_destination& where, media_format* format, media_source* out_source, char* out_name)
|
ToneProducer::PrepareToConnect(const media_source& what, const media_destination& where, media_format* format, media_source* out_source, char* out_name)
|
||||||
{
|
{
|
||||||
// PrepareToConnect() is the second stage of format negotiations that happens
|
// PrepareToConnect() is the second stage of format negotiations that happens
|
||||||
@@ -396,7 +394,7 @@ ToneProducer::PrepareToConnect(const media_source& what, const media_destination
|
|||||||
format->u.raw_audio.channel_count = 2;
|
format->u.raw_audio.channel_count = 2;
|
||||||
return B_MEDIA_BAD_FORMAT;
|
return B_MEDIA_BAD_FORMAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// !!! validate all other fields except for buffer_size here, because the consumer might have
|
// !!! validate all other fields except for buffer_size here, because the consumer might have
|
||||||
// supplied different values from AcceptFormat()?
|
// supplied different values from AcceptFormat()?
|
||||||
@@ -429,13 +427,13 @@ ToneProducer::PrepareToConnect(const media_source& what, const media_destination
|
|||||||
{
|
{
|
||||||
FPRINTF(stderr, "\tconsumer suggested buffer_size %lu\n", format->u.raw_audio.buffer_size);
|
FPRINTF(stderr, "\tconsumer suggested buffer_size %lu\n", format->u.raw_audio.buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now reserve the connection, and return information about it
|
// Now reserve the connection, and return information about it
|
||||||
mOutput.destination = where;
|
mOutput.destination = where;
|
||||||
mOutput.format = *format;
|
mOutput.format = *format;
|
||||||
*out_source = mOutput.source;
|
*out_source = mOutput.source;
|
||||||
strncpy(out_name, mOutput.name, B_MEDIA_NAME_LENGTH);
|
strncpy(out_name, mOutput.name, B_MEDIA_NAME_LENGTH);
|
||||||
|
|
||||||
char formatStr[256];
|
char formatStr[256];
|
||||||
string_for_format(*format, formatStr, 255);
|
string_for_format(*format, formatStr, 255);
|
||||||
FPRINTF(stderr, "\treturning format: %s\n", formatStr);
|
FPRINTF(stderr, "\treturning format: %s\n", formatStr);
|
||||||
@@ -443,7 +441,7 @@ ToneProducer::PrepareToConnect(const media_source& what, const media_destination
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::Connect(status_t error, const media_source& source, const media_destination& destination, const media_format& format, char* io_name)
|
ToneProducer::Connect(status_t error, const media_source& source, const media_destination& destination, const media_format& format, char* io_name)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::Connect\n");
|
FPRINTF(stderr, "ToneProducer::Connect\n");
|
||||||
@@ -470,7 +468,7 @@ ToneProducer::Connect(status_t error, const media_source& source, const media_de
|
|||||||
// FPRINTF(stderr, "\tcorrupted format; falling back to last suggested format\n");
|
// FPRINTF(stderr, "\tcorrupted format; falling back to last suggested format\n");
|
||||||
// format = mOutput.format;
|
// format = mOutput.format;
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
|
|
||||||
// Okay, the connection has been confirmed. Record the destination and format
|
// Okay, the connection has been confirmed. Record the destination and format
|
||||||
// that we agreed on, and report our connection name again.
|
// that we agreed on, and report our connection name again.
|
||||||
@@ -505,7 +503,7 @@ ToneProducer::Connect(status_t error, const media_source& source, const media_de
|
|||||||
// reset our buffer duration, etc. to avoid later calculations
|
// reset our buffer duration, etc. to avoid later calculations
|
||||||
// +++++ e.moon 11jun99: crashes w/ divide-by-zero when connecting to LoggingConsumer
|
// +++++ e.moon 11jun99: crashes w/ divide-by-zero when connecting to LoggingConsumer
|
||||||
ASSERT(mOutput.format.u.raw_audio.frame_rate);
|
ASSERT(mOutput.format.u.raw_audio.frame_rate);
|
||||||
|
|
||||||
bigtime_t duration = bigtime_t(1000000) * samplesPerBuffer / bigtime_t(mOutput.format.u.raw_audio.frame_rate);
|
bigtime_t duration = bigtime_t(1000000) * samplesPerBuffer / bigtime_t(mOutput.format.u.raw_audio.frame_rate);
|
||||||
SetBufferDuration(duration);
|
SetBufferDuration(duration);
|
||||||
|
|
||||||
@@ -516,7 +514,7 @@ ToneProducer::Connect(status_t error, const media_source& source, const media_de
|
|||||||
if (!mBufferGroup) AllocateBuffers();
|
if (!mBufferGroup) AllocateBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::Disconnect(const media_source& what, const media_destination& where)
|
ToneProducer::Disconnect(const media_source& what, const media_destination& where)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::Disconnect\n");
|
FPRINTF(stderr, "ToneProducer::Disconnect\n");
|
||||||
@@ -536,7 +534,7 @@ ToneProducer::Disconnect(const media_source& what, const media_destination& wher
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::LateNoticeReceived(const media_source& what, bigtime_t how_much, bigtime_t performance_time)
|
ToneProducer::LateNoticeReceived(const media_source& what, bigtime_t how_much, bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::LateNoticeReceived\n");
|
FPRINTF(stderr, "ToneProducer::LateNoticeReceived\n");
|
||||||
@@ -577,7 +575,7 @@ ToneProducer::LateNoticeReceived(const media_source& what, bigtime_t how_much, b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::EnableOutput(const media_source& what, bool enabled, int32* _deprecated_)
|
ToneProducer::EnableOutput(const media_source& what, bool enabled, int32* _deprecated_)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::EnableOutput\n");
|
FPRINTF(stderr, "ToneProducer::EnableOutput\n");
|
||||||
@@ -592,7 +590,7 @@ ToneProducer::EnableOutput(const media_source& what, bool enabled, int32* _depre
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::SetPlayRate(int32 numer, int32 denom)
|
ToneProducer::SetPlayRate(int32 numer, int32 denom)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::SetPlayRate\n");
|
FPRINTF(stderr, "ToneProducer::SetPlayRate\n");
|
||||||
@@ -602,7 +600,7 @@ ToneProducer::SetPlayRate(int32 numer, int32 denom)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::HandleMessage(int32 message, const void* data, size_t size)
|
ToneProducer::HandleMessage(int32 message, const void* data, size_t size)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::HandleMessage(%ld = 0x%lx)\n", message, message);
|
FPRINTF(stderr, "ToneProducer::HandleMessage(%ld = 0x%lx)\n", message, message);
|
||||||
@@ -615,7 +613,7 @@ ToneProducer::HandleMessage(int32 message, const void* data, size_t size)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::AdditionalBufferRequested(const media_source& source, media_buffer_id prev_buffer, bigtime_t prev_time, const media_seek_tag* prev_tag)
|
ToneProducer::AdditionalBufferRequested(const media_source& source, media_buffer_id prev_buffer, bigtime_t prev_time, const media_seek_tag* prev_tag)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::AdditionalBufferRequested\n");
|
FPRINTF(stderr, "ToneProducer::AdditionalBufferRequested\n");
|
||||||
@@ -624,7 +622,7 @@ ToneProducer::AdditionalBufferRequested(const media_source& source, media_buffer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::LatencyChanged(
|
ToneProducer::LatencyChanged(
|
||||||
const media_source& source,
|
const media_source& source,
|
||||||
const media_destination& destination,
|
const media_destination& destination,
|
||||||
@@ -645,7 +643,7 @@ ToneProducer::LatencyChanged(
|
|||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
// Workaround for a Metrowerks PPC compiler bug
|
// Workaround for a Metrowerks PPC compiler bug
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::DeleteHook(BMediaNode* node)
|
ToneProducer::DeleteHook(BMediaNode* node)
|
||||||
{
|
{
|
||||||
return BMediaEventLooper::DeleteHook(node);
|
return BMediaEventLooper::DeleteHook(node);
|
||||||
@@ -655,7 +653,7 @@ ToneProducer::DeleteHook(BMediaNode* node)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// BMediaEventLooper methods
|
// BMediaEventLooper methods
|
||||||
void
|
void
|
||||||
ToneProducer::NodeRegistered()
|
ToneProducer::NodeRegistered()
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::NodeRegistered\n");
|
FPRINTF(stderr, "ToneProducer::NodeRegistered\n");
|
||||||
@@ -672,7 +670,7 @@ ToneProducer::NodeRegistered()
|
|||||||
SetParameterWeb(mWeb);
|
SetParameterWeb(mWeb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::Start(bigtime_t performance_time)
|
ToneProducer::Start(bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
PRINT(("ToneProducer::Start(%Ld): now %Ld\n", performance_time, TimeSource()->Now()));
|
PRINT(("ToneProducer::Start(%Ld): now %Ld\n", performance_time, TimeSource()->Now()));
|
||||||
@@ -686,7 +684,7 @@ ToneProducer::Start(bigtime_t performance_time)
|
|||||||
BMediaEventLooper::Start(performance_time);
|
BMediaEventLooper::Start(performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::Stop(bigtime_t performance_time, bool immediate)
|
ToneProducer::Stop(bigtime_t performance_time, bool immediate)
|
||||||
{
|
{
|
||||||
// send 'data not available' message
|
// send 'data not available' message
|
||||||
@@ -700,7 +698,7 @@ ToneProducer::Stop(bigtime_t performance_time, bool immediate)
|
|||||||
BMediaEventLooper::Stop(performance_time, immediate);
|
BMediaEventLooper::Stop(performance_time, immediate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
ToneProducer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
||||||
{
|
{
|
||||||
// A bug in the current PowerPC compiler demands that we implement
|
// A bug in the current PowerPC compiler demands that we implement
|
||||||
@@ -708,7 +706,7 @@ ToneProducer::Seek(bigtime_t media_time, bigtime_t performance_time)
|
|||||||
BMediaEventLooper::Seek(media_time, performance_time);
|
BMediaEventLooper::Seek(media_time, performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
ToneProducer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
||||||
{
|
{
|
||||||
// A bug in the current PowerPC compiler demands that we implement
|
// A bug in the current PowerPC compiler demands that we implement
|
||||||
@@ -716,7 +714,7 @@ ToneProducer::TimeWarp(bigtime_t at_real_time, bigtime_t to_performance_time)
|
|||||||
BMediaEventLooper::TimeWarp(at_real_time, to_performance_time);
|
BMediaEventLooper::TimeWarp(at_real_time, to_performance_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ToneProducer::AddTimer(bigtime_t at_performance_time, int32 cookie)
|
ToneProducer::AddTimer(bigtime_t at_performance_time, int32 cookie)
|
||||||
{
|
{
|
||||||
// A bug in the current PowerPC compiler demands that we implement
|
// A bug in the current PowerPC compiler demands that we implement
|
||||||
@@ -724,7 +722,7 @@ ToneProducer::AddTimer(bigtime_t at_performance_time, int32 cookie)
|
|||||||
return BMediaEventLooper::AddTimer(at_performance_time, cookie);
|
return BMediaEventLooper::AddTimer(at_performance_time, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::SetRunMode(run_mode mode)
|
ToneProducer::SetRunMode(run_mode mode)
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::SetRunMode\n");
|
FPRINTF(stderr, "ToneProducer::SetRunMode\n");
|
||||||
@@ -737,7 +735,7 @@ ToneProducer::SetRunMode(run_mode mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::HandleEvent(const media_timed_event* event, bigtime_t lateness, bool realTimeEvent)
|
ToneProducer::HandleEvent(const media_timed_event* event, bigtime_t lateness, bool realTimeEvent)
|
||||||
{
|
{
|
||||||
// FPRINTF(stderr, "ToneProducer::HandleEvent\n");
|
// FPRINTF(stderr, "ToneProducer::HandleEvent\n");
|
||||||
@@ -862,7 +860,7 @@ ToneProducer::HandleEvent(const media_timed_event* event, bigtime_t lateness, bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void
|
void
|
||||||
ToneProducer::CleanUpEvent(const media_timed_event *event)
|
ToneProducer::CleanUpEvent(const media_timed_event *event)
|
||||||
{
|
{
|
||||||
// A bug in the current PowerPC compiler demands that we implement
|
// A bug in the current PowerPC compiler demands that we implement
|
||||||
@@ -870,7 +868,7 @@ ToneProducer::CleanUpEvent(const media_timed_event *event)
|
|||||||
BMediaEventLooper::CleanUpEvent(event);
|
BMediaEventLooper::CleanUpEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bigtime_t
|
bigtime_t
|
||||||
ToneProducer::OfflineTime()
|
ToneProducer::OfflineTime()
|
||||||
{
|
{
|
||||||
// A bug in the current PowerPC compiler demands that we implement
|
// A bug in the current PowerPC compiler demands that we implement
|
||||||
@@ -878,7 +876,7 @@ ToneProducer::OfflineTime()
|
|||||||
return BMediaEventLooper::OfflineTime();
|
return BMediaEventLooper::OfflineTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::ControlLoop()
|
ToneProducer::ControlLoop()
|
||||||
{
|
{
|
||||||
// A bug in the current PowerPC compiler demands that we implement
|
// A bug in the current PowerPC compiler demands that we implement
|
||||||
@@ -889,11 +887,11 @@ ToneProducer::ControlLoop()
|
|||||||
//#pragma mark -
|
//#pragma mark -
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ToneProducer::AllocateBuffers()
|
ToneProducer::AllocateBuffers()
|
||||||
{
|
{
|
||||||
FPRINTF(stderr, "ToneProducer::AllocateBuffers\n");
|
FPRINTF(stderr, "ToneProducer::AllocateBuffers\n");
|
||||||
|
|
||||||
// allocate enough buffers to span our downstream latency, plus one
|
// allocate enough buffers to span our downstream latency, plus one
|
||||||
size_t size = mOutput.format.u.raw_audio.buffer_size;
|
size_t size = mOutput.format.u.raw_audio.buffer_size;
|
||||||
int32 count = int32(mLatency / BufferDuration() + 1 + 1);
|
int32 count = int32(mLatency / BufferDuration() + 1 + 1);
|
||||||
@@ -918,7 +916,7 @@ ToneProducer::FillNextBuffer(bigtime_t event_time)
|
|||||||
|
|
||||||
// now fill it with data, continuing where the last buffer left off
|
// now fill it with data, continuing where the last buffer left off
|
||||||
// 20sep99: multichannel support
|
// 20sep99: multichannel support
|
||||||
|
|
||||||
size_t numFrames =
|
size_t numFrames =
|
||||||
mOutput.format.u.raw_audio.buffer_size /
|
mOutput.format.u.raw_audio.buffer_size /
|
||||||
(sizeof(float)*mOutput.format.u.raw_audio.channel_count);
|
(sizeof(float)*mOutput.format.u.raw_audio.channel_count);
|
||||||
@@ -978,7 +976,7 @@ ToneProducer::FillNextBuffer(bigtime_t event_time)
|
|||||||
void
|
void
|
||||||
ToneProducer::FillSineBuffer(float *data, size_t numFrames, bool stereo)
|
ToneProducer::FillSineBuffer(float *data, size_t numFrames, bool stereo)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// cover 2pi radians in one period
|
// cover 2pi radians in one period
|
||||||
double dTheta = 2*M_PI * double(mFrequency) / mOutput.format.u.raw_audio.frame_rate;
|
double dTheta = 2*M_PI * double(mFrequency) / mOutput.format.u.raw_audio.frame_rate;
|
||||||
@@ -992,7 +990,7 @@ ToneProducer::FillSineBuffer(float *data, size_t numFrames, bool stereo)
|
|||||||
++data;
|
++data;
|
||||||
*data = val;
|
*data = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
mTheta += dTheta;
|
mTheta += dTheta;
|
||||||
if (mTheta > 2*M_PI)
|
if (mTheta > 2*M_PI)
|
||||||
{
|
{
|
||||||
@@ -1017,7 +1015,7 @@ ToneProducer::FillTriangleBuffer(float *data, size_t numFrames, bool stereo)
|
|||||||
++data;
|
++data;
|
||||||
*data = val;
|
*data = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
mTheta += dTheta;
|
mTheta += dTheta;
|
||||||
if (mTheta >= 1)
|
if (mTheta >= 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -32,18 +33,15 @@
|
|||||||
/*
|
/*
|
||||||
ToneProducer.h
|
ToneProducer.h
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
|
|
||||||
NOTES [email protected] 11june99
|
NOTES [email protected] 11june99
|
||||||
- this node has some holes in it, but it's pretty useful starting
|
- this node has some holes in it, but it's pretty useful starting
|
||||||
point for writing producers.
|
point for writing producers.
|
||||||
- I've tried to clean up the format negotiation a bit, which didn't
|
- I've tried to clean up the format negotiation a bit, which didn't
|
||||||
fare too well when faced with an apathetic downstream node
|
fare too well when faced with an apathetic downstream node
|
||||||
(LoggingConsumer.)
|
(LoggingConsumer.)
|
||||||
|
|
||||||
KNOWN BUGS
|
KNOWN BUGS
|
||||||
eamoon 17jun99
|
eamoon 17jun99
|
||||||
* Can't handle 2 channels, but is too polite to refuse.
|
* Can't handle 2 channels, but is too polite to refuse.
|
||||||
How embarrassing.
|
How embarrassing.
|
||||||
|
|
||||||
@@ -89,7 +87,7 @@ public:
|
|||||||
bigtime_t when,
|
bigtime_t when,
|
||||||
const void* value,
|
const void* value,
|
||||||
size_t size);
|
size_t size);
|
||||||
|
|
||||||
status_t StartControlPanel(
|
status_t StartControlPanel(
|
||||||
BMessenger* pMessenger);
|
BMessenger* pMessenger);
|
||||||
|
|
||||||
@@ -142,7 +140,7 @@ public:
|
|||||||
char* out_name);
|
char* out_name);
|
||||||
|
|
||||||
void Connect(
|
void Connect(
|
||||||
status_t error,
|
status_t error,
|
||||||
const media_source& source,
|
const media_source& source,
|
||||||
const media_destination& destination,
|
const media_destination& destination,
|
||||||
const media_format& format,
|
const media_format& format,
|
||||||
@@ -217,7 +215,7 @@ protected:
|
|||||||
|
|
||||||
// Workaround for a Metrowerks PPC compiler bug
|
// Workaround for a Metrowerks PPC compiler bug
|
||||||
void ControlLoop();
|
void ControlLoop();
|
||||||
|
|
||||||
// Workaround for a Metrowerks PPC compiler bug
|
// Workaround for a Metrowerks PPC compiler bug
|
||||||
status_t DeleteHook(BMediaNode* node);
|
status_t DeleteHook(BMediaNode* node);
|
||||||
*/
|
*/
|
||||||
@@ -251,7 +249,7 @@ private:
|
|||||||
bigtime_t mGainLastChanged;
|
bigtime_t mGainLastChanged;
|
||||||
bigtime_t mFreqLastChanged;
|
bigtime_t mFreqLastChanged;
|
||||||
bigtime_t mWaveLastChanged;
|
bigtime_t mWaveLastChanged;
|
||||||
|
|
||||||
// host addon
|
// host addon
|
||||||
// [8jun99] e.moon
|
// [8jun99] e.moon
|
||||||
BMediaAddOn* m_pAddOn;
|
BMediaAddOn* m_pAddOn;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -49,7 +50,7 @@ extern "C" _EXPORT BMediaAddOn* make_media_addon(image_id image) {
|
|||||||
ToneProducerAddOn::~ToneProducerAddOn() {}
|
ToneProducerAddOn::~ToneProducerAddOn() {}
|
||||||
ToneProducerAddOn::ToneProducerAddOn(image_id image) :
|
ToneProducerAddOn::ToneProducerAddOn(image_id image) :
|
||||||
BMediaAddOn(image) {}
|
BMediaAddOn(image) {}
|
||||||
|
|
||||||
// -------------------------------------------------------- //
|
// -------------------------------------------------------- //
|
||||||
// BMediaAddOn impl
|
// BMediaAddOn impl
|
||||||
// -------------------------------------------------------- //
|
// -------------------------------------------------------- //
|
||||||
@@ -58,7 +59,7 @@ status_t ToneProducerAddOn::InitCheck(
|
|||||||
const char** out_failure_text) {
|
const char** out_failure_text) {
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 ToneProducerAddOn::CountFlavors() {
|
int32 ToneProducerAddOn::CountFlavors() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -68,7 +69,7 @@ status_t ToneProducerAddOn::GetFlavorAt(
|
|||||||
const flavor_info** out_info) {
|
const flavor_info** out_info) {
|
||||||
if(n)
|
if(n)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
flavor_info* pInfo = new flavor_info;
|
flavor_info* pInfo = new flavor_info;
|
||||||
pInfo->internal_id = n;
|
pInfo->internal_id = n;
|
||||||
pInfo->name = "ToneProducer";
|
pInfo->name = "ToneProducer";
|
||||||
@@ -79,16 +80,16 @@ status_t ToneProducerAddOn::GetFlavorAt(
|
|||||||
pInfo->kinds = B_BUFFER_PRODUCER | B_CONTROLLABLE;
|
pInfo->kinds = B_BUFFER_PRODUCER | B_CONTROLLABLE;
|
||||||
pInfo->flavor_flags = 0;
|
pInfo->flavor_flags = 0;
|
||||||
pInfo->possible_count = 0;
|
pInfo->possible_count = 0;
|
||||||
|
|
||||||
pInfo->in_format_count = 0;
|
pInfo->in_format_count = 0;
|
||||||
pInfo->in_formats = 0;
|
pInfo->in_formats = 0;
|
||||||
|
|
||||||
pInfo->out_format_count = 1;
|
pInfo->out_format_count = 1;
|
||||||
media_format* pFormat = new media_format;
|
media_format* pFormat = new media_format;
|
||||||
pFormat->type = B_MEDIA_RAW_AUDIO;
|
pFormat->type = B_MEDIA_RAW_AUDIO;
|
||||||
pFormat->u.raw_audio = media_raw_audio_format::wildcard;
|
pFormat->u.raw_audio = media_raw_audio_format::wildcard;
|
||||||
pInfo->out_formats = pFormat;
|
pInfo->out_formats = pFormat;
|
||||||
|
|
||||||
*out_info = pInfo;
|
*out_info = pInfo;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -98,15 +99,15 @@ BMediaNode* ToneProducerAddOn::InstantiateNodeFor(
|
|||||||
BMessage* config,
|
BMessage* config,
|
||||||
status_t* out_error) {
|
status_t* out_error) {
|
||||||
|
|
||||||
return new ToneProducer(this);
|
return new ToneProducer(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t ToneProducerAddOn::GetConfigurationFor(
|
status_t ToneProducerAddOn::GetConfigurationFor(
|
||||||
BMediaNode* your_node,
|
BMediaNode* your_node,
|
||||||
BMessage* into_message) {
|
BMessage* into_message) {
|
||||||
|
|
||||||
// no config yet
|
// no config yet
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// END -- ToneProducerAddOn.cpp
|
// END -- ToneProducerAddOn.cpp
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -46,11 +47,11 @@
|
|||||||
class ToneProducerAddOn :
|
class ToneProducerAddOn :
|
||||||
public BMediaAddOn {
|
public BMediaAddOn {
|
||||||
typedef BMediaAddOn _inherited;
|
typedef BMediaAddOn _inherited;
|
||||||
|
|
||||||
public: // ctor/dtor
|
public: // ctor/dtor
|
||||||
virtual ~ToneProducerAddOn();
|
virtual ~ToneProducerAddOn();
|
||||||
explicit ToneProducerAddOn(image_id image);
|
explicit ToneProducerAddOn(image_id image);
|
||||||
|
|
||||||
public: // BMediaAddOn impl
|
public: // BMediaAddOn impl
|
||||||
virtual status_t InitCheck(
|
virtual status_t InitCheck(
|
||||||
const char** out_failure_text);
|
const char** out_failure_text);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -29,13 +30,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
ToneProducerApp main.cpp
|
|
||||||
|
|
||||||
Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
This file may be used under the terms of the Be Sample Code License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "NodeHarnessApp.h"
|
#include "NodeHarnessApp.h"
|
||||||
#include "MediaNodeControlApp.h"
|
#include "MediaNodeControlApp.h"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@@ -57,6 +51,6 @@ int main(int argc, char** argv) {
|
|||||||
MediaNodeControlApp app(g_pAppSignature, id);
|
MediaNodeControlApp app(g_pAppSignature, id);
|
||||||
app.Run();
|
app.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
----------------------
|
|
||||||
Be Sample Code License
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Copyright 1991-1999, Be Incorporated.
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. The name of the author may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1998-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -35,8 +36,6 @@
|
|||||||
/
|
/
|
||||||
/ Description: Utility functions for handling audio data.
|
/ Description: Utility functions for handling audio data.
|
||||||
/
|
/
|
||||||
/ Copyright 1998-1999, Be Incorporated, All Rights Reserved
|
|
||||||
/
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#include "SoundUtils.h"
|
#include "SoundUtils.h"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1998-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -35,8 +36,6 @@
|
|||||||
/
|
/
|
||||||
/ Description: Utility functions for handling audio data.
|
/ Description: Utility functions for handling audio data.
|
||||||
/
|
/
|
||||||
/ Copyright 1998-1999, Be Incorporated, All Rights Reserved
|
|
||||||
/
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#if ! defined( _SoundUtils_h )
|
#if ! defined( _SoundUtils_h )
|
||||||
@@ -78,7 +77,7 @@ enum {
|
|||||||
B_DISCONNECTED, //
|
B_DISCONNECTED, //
|
||||||
B_FORMAT_CHANGED, // media_raw_audio_format*
|
B_FORMAT_CHANGED, // media_raw_audio_format*
|
||||||
B_NODE_DIES, // node will die!
|
B_NODE_DIES, // node will die!
|
||||||
B_HOOKS_CHANGED, //
|
B_HOOKS_CHANGED, //
|
||||||
B_OP_TIMED_OUT, // timeout that expired -- Consumer only
|
B_OP_TIMED_OUT, // timeout that expired -- Consumer only
|
||||||
B_PRODUCER_DATA_STATUS, // status performance_time -- Consumer only
|
B_PRODUCER_DATA_STATUS, // status performance_time -- Consumer only
|
||||||
B_LATE_NOTICE // how_much performance_time -- Producer only
|
B_LATE_NOTICE // how_much performance_time -- Producer only
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
|
|
||||||
This license applies to the following files:
|
|
||||||
|
|
||||||
array_delete.h
|
|
||||||
MultiInvoker.cpp
|
|
||||||
MultiInvoker.h
|
|
||||||
SoundUtils.cpp
|
|
||||||
SoundUtils.h
|
|
||||||
|
|
||||||
----------------------
|
|
||||||
Be Sample Code License
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Copyright 1991-1999, Be Incorporated.
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions, and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. The name of the author may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -34,9 +35,6 @@
|
|||||||
// ----------------
|
// ----------------
|
||||||
// Implements the MultiInvoker class.
|
// Implements the MultiInvoker class.
|
||||||
//
|
//
|
||||||
// Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
// This file may be used under the terms of the Be Sample
|
|
||||||
// Code License.
|
|
||||||
|
|
||||||
#include <Messenger.h>
|
#include <Messenger.h>
|
||||||
#include "MultiInvoker.h"
|
#include "MultiInvoker.h"
|
||||||
@@ -111,7 +109,7 @@ status_t MultiInvoker::AddTarget(const BHandler* h, const BLooper* loop)
|
|||||||
m_messengers.AddItem(msgr);
|
m_messengers.AddItem(msgr);
|
||||||
else
|
else
|
||||||
delete msgr;
|
delete msgr;
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t MultiInvoker::AddTarget(BMessenger* msgr)
|
status_t MultiInvoker::AddTarget(BMessenger* msgr)
|
||||||
@@ -204,8 +202,8 @@ status_t MultiInvoker::Invoke(BMessage* msg)
|
|||||||
if (! sendMsg)
|
if (! sendMsg)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
status_t err, finalResult=B_OK;
|
status_t err, finalResult=B_OK;
|
||||||
BMessage replyMsg;
|
BMessage replyMsg;
|
||||||
int32 len = CountTargets();
|
int32 len = CountTargets();
|
||||||
for (int32 i=0; i<len; i++) {
|
for (int32 i=0; i<len; i++) {
|
||||||
BMessenger* msgr = MessengerAt(i);
|
BMessenger* msgr = MessengerAt(i);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -34,9 +35,7 @@
|
|||||||
// --------------
|
// --------------
|
||||||
// Declares the MultiInvoker class.
|
// Declares the MultiInvoker class.
|
||||||
//
|
//
|
||||||
// Copyright 1999, Be Incorporated. All Rights Reserved.
|
|
||||||
// This file may be used under the terms of the Be Sample
|
|
||||||
// Code License.
|
|
||||||
|
|
||||||
#ifndef _MultiInvoker_h
|
#ifndef _MultiInvoker_h
|
||||||
#define _MultiInvoker_h
|
#define _MultiInvoker_h
|
||||||
@@ -56,13 +55,13 @@ public:
|
|||||||
MultiInvoker();
|
MultiInvoker();
|
||||||
MultiInvoker(const MultiInvoker& src);
|
MultiInvoker(const MultiInvoker& src);
|
||||||
virtual ~MultiInvoker();
|
virtual ~MultiInvoker();
|
||||||
|
|
||||||
MultiInvoker& operator=(const MultiInvoker& src);
|
MultiInvoker& operator=(const MultiInvoker& src);
|
||||||
|
|
||||||
virtual void SetMessage(BMessage* message);
|
virtual void SetMessage(BMessage* message);
|
||||||
BMessage* Message() const;
|
BMessage* Message() const;
|
||||||
uint32 Command() const;
|
uint32 Command() const;
|
||||||
|
|
||||||
virtual status_t AddTarget(const BHandler* h, const BLooper* loop=0);
|
virtual status_t AddTarget(const BHandler* h, const BLooper* loop=0);
|
||||||
|
|
||||||
// For this version of AddTarget, the MultiInvoker
|
// For this version of AddTarget, the MultiInvoker
|
||||||
@@ -78,20 +77,20 @@ virtual void RemoveTarget(int32 index);
|
|||||||
|
|
||||||
void SetTimeout(bigtime_t timeout);
|
void SetTimeout(bigtime_t timeout);
|
||||||
bigtime_t Timeout() const;
|
bigtime_t Timeout() const;
|
||||||
|
|
||||||
virtual void SetHandlerForReply(BHandler* h);
|
virtual void SetHandlerForReply(BHandler* h);
|
||||||
BHandler* HandlerForReply() const;
|
BHandler* HandlerForReply() const;
|
||||||
|
|
||||||
virtual status_t Invoke(BMessage* msg =0);
|
virtual status_t Invoke(BMessage* msg =0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Clear();
|
void Clear();
|
||||||
void Clone(const MultiInvoker& src);
|
void Clone(const MultiInvoker& src);
|
||||||
|
|
||||||
BMessage* m_message;
|
BMessage* m_message;
|
||||||
BList m_messengers;
|
BList m_messengers;
|
||||||
bigtime_t m_timeout;
|
bigtime_t m_timeout;
|
||||||
BHandler* m_replyHandler;
|
BHandler* m_replyHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _MultiInvoker_h */
|
#endif /* _MultiInvoker_h */
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1998-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -35,8 +36,6 @@
|
|||||||
/
|
/
|
||||||
/ Description: Utility functions for handling audio data.
|
/ Description: Utility functions for handling audio data.
|
||||||
/
|
/
|
||||||
/ Copyright 1998-1999, Be Incorporated, All Rights Reserved
|
|
||||||
/
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#include "SoundUtils.h"
|
#include "SoundUtils.h"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1998-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -35,8 +36,6 @@
|
|||||||
/
|
/
|
||||||
/ Description: Utility functions for handling audio data.
|
/ Description: Utility functions for handling audio data.
|
||||||
/
|
/
|
||||||
/ Copyright 1998-1999, Be Incorporated, All Rights Reserved
|
|
||||||
/
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#if ! defined( _SoundUtils_h )
|
#if ! defined( _SoundUtils_h )
|
||||||
@@ -78,7 +77,7 @@ enum {
|
|||||||
B_DISCONNECTED, //
|
B_DISCONNECTED, //
|
||||||
B_FORMAT_CHANGED, // media_raw_audio_format*
|
B_FORMAT_CHANGED, // media_raw_audio_format*
|
||||||
B_NODE_DIES, // node will die!
|
B_NODE_DIES, // node will die!
|
||||||
B_HOOKS_CHANGED, //
|
B_HOOKS_CHANGED, //
|
||||||
B_OP_TIMED_OUT, // timeout that expired -- Consumer only
|
B_OP_TIMED_OUT, // timeout that expired -- Consumer only
|
||||||
B_PRODUCER_DATA_STATUS, // status performance_time -- Consumer only
|
B_PRODUCER_DATA_STATUS, // status performance_time -- Consumer only
|
||||||
B_LATE_NOTICE // how_much performance_time -- Producer only
|
B_LATE_NOTICE // how_much performance_time -- Producer only
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 1998-1999, Be Incorporated.
|
||||||
* Copyright (c) 1999-2000, Eric Moon.
|
* Copyright (c) 1999-2000, Eric Moon.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -35,8 +36,6 @@
|
|||||||
/
|
/
|
||||||
/ Description: Template for deleting a new[] array of something.
|
/ Description: Template for deleting a new[] array of something.
|
||||||
/
|
/
|
||||||
/ Copyright 1998-1999, Be Incorporated, All Rights Reserved
|
|
||||||
/
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user