void register_encoder() { status_t err; media_format tempFormat, mediaFormat; media_format_description formatDescription; BMediaFormats formatObject; formatObject.Lock(); /* register as a WAV codec */ memset(&mediaFormat, 0, sizeof(media_format)); mediaFormat.type = B_MEDIA_ENCODED_AUDIO; mediaFormat.u.encoded_audio = media_encoded_audio_format::wildcard; memset(&formatDescription, 0, sizeof(media_format_description)); formatDescription.family = B_WAV_FORMAT_FAMILY; formatDescription.u.wav.codec = WAVE_FORMAT_MPEG; err = formatObject.MakeFormatFor(formatDescription, mediaFormat, &tempFormat); if (err == B_MEDIA_DUPLICATE_FORMAT) formatObject.GetFormatFor(formatDescription, &tempFormat); s_wavFormat = tempFormat; /* register as a MPEG codec */ memset(&mediaFormat, 0, sizeof(media_format)); mediaFormat.type = B_MEDIA_ENCODED_AUDIO; mediaFormat.u.encoded_audio = media_encoded_audio_format::wildcard; memset(&formatDescription, 0, sizeof(media_format_description)); formatDescription.family = B_MPEG_FORMAT_FAMILY; formatDescription.u.mpeg.id = B_MPEG_1_AUDIO_LAYER_3; err = formatObject.MakeFormatFor(formatDescription, mediaFormat, &tempFormat); if (err == B_MEDIA_DUPLICATE_FORMAT) formatObject.GetFormatFor(formatDescription, &tempFormat); s_mpegFormat = tempFormat; formatObject.Unlock(); }