status_t AudioFilterNode::PrepareToConnect( const media_source& source, const media_destination& destination, media_format* ioFormat, media_source* outSource, char* outName) { status_t err; char formatStr[256]; string_for_format(*ioFormat, formatStr, 255); PRINT(("AudioFilterNode::PrepareToConnect()\n" "\tproposed format: %s\n", formatStr)); if(source != m_output.source) { PRINT(("\tBad source.\n")); return B_MEDIA_BAD_SOURCE; } if(m_output.destination != media_destination::null) { PRINT(("\tAlready connected.\n")); return B_MEDIA_ALREADY_CONNECTED; } if(ioFormat->type != B_MEDIA_RAW_AUDIO) { PRINT(("\tBad format type.\n")); return B_MEDIA_BAD_FORMAT; } // do a final validity check: media_format required; required.type = B_MEDIA_RAW_AUDIO; err = getRequiredOutputFormat(required); ASSERT(err == B_OK); err = validateProposedOutputFormat( required, *ioFormat); if(err < B_OK) { // no go return err; } // fill in wildcards specializeOutputFormat(*ioFormat); string_for_format(*ioFormat, formatStr, 255); PRINT(("FINAL FORMAT: %s\n", formatStr)); // reserve the output m_output.destination = destination; m_output.format = *ioFormat; // pass back source & output name *outSource = m_output.source; strncpy(outName, m_output.name, B_MEDIA_NAME_LENGTH); return B_OK; }
status_t FlangerNode::PrepareToConnect( const media_source& source, const media_destination& destination, media_format* pioFormat, media_source* poSource, char* poName) { char formatStr[256]; string_for_format(*pioFormat, formatStr, 255); PRINT(("FlangerNode::PrepareToConnect()\n" "\tproposed format: %s\n", formatStr)); if(source != m_output.source) { PRINT(("\tBad source.\n")); return B_MEDIA_BAD_SOURCE; } if(m_output.destination != media_destination::null) { PRINT(("\tAlready connected.\n")); return B_MEDIA_ALREADY_CONNECTED; } if(pioFormat->type != B_MEDIA_RAW_AUDIO) { PRINT(("\tBad format type.\n")); return B_MEDIA_BAD_FORMAT; } // do a final validity check: status_t err = validateProposedFormat( (m_format.u.raw_audio.format != media_raw_audio_format::wildcard.format) ? m_format : m_preferredFormat, *pioFormat); if(err < B_OK) { // no go return err; } // fill in wildcards specializeOutputFormat(*pioFormat); // reserve the output m_output.destination = destination; m_output.format = *pioFormat; // pass back source & output name *poSource = m_output.source; strncpy(poName, m_output.name, B_MEDIA_NAME_LENGTH); return B_OK; }