MediaClient: Just some interface review

This commit is contained in:
Dario Casalinuovo 2016-12-06 21:05:15 +01:00
parent ae7d265575
commit f1f0956504
9 changed files with 46 additions and 36 deletions

View File

@ -35,7 +35,7 @@ public:
BMediaClient(const char* name,
media_type type
= B_MEDIA_UNKNOWN_TYPE,
media_client_kind
media_client_kinds
kind = B_MEDIA_PLAYER
& B_MEDIA_RECORDER);
@ -43,8 +43,10 @@ public:
const media_client& Client() const;
media_client_id Id() const;
const char* Name() const;
// Return the capabilities of this BMediaClient instance.
media_client_kind Kind() const;
media_client_kinds Kinds() const;
media_type MediaType() const;
status_t InitCheck() const;
@ -55,7 +57,7 @@ public:
// When those functions return, the BMediaConnection is added to the
// list and is visible to other nodes as not connected. Any input/output
// should be registered to a BMediaNode to become something useful.
// should be registered to a BMediaClient to become something useful.
virtual status_t RegisterInput(BMediaInput* input);
virtual status_t RegisterOutput(BMediaOutput* output);

View File

@ -13,13 +13,13 @@
namespace BPrivate { namespace media {
typedef int32 media_client_id;
typedef int32 media_client_kind;
typedef int32 media_connection_kind;
typedef int32 media_connection_id;
typedef uint64 media_client_id;
typedef uint64 media_client_kinds;
typedef uint64 media_connection_kinds;
typedef uint64 media_connection_id;
enum media_client_kinds {
enum media_client_kind {
// The client can receive media data.
B_MEDIA_RECORDER = 0x000000001,
// The client can send media data to another client.
@ -28,7 +28,7 @@ enum media_client_kinds {
B_MEDIA_CONTROLLABLE = 0x000000004
};
enum media_connection_kinds {
enum media_connection_kind {
B_MEDIA_INPUT = 0,
B_MEDIA_OUTPUT = 1
};
@ -36,12 +36,12 @@ enum media_connection_kinds {
typedef struct media_client {
media_client_id Id() const;
media_client_kind Kind() const;
media_client_kinds Kinds() const;
BMessage* ToMessage();
private:
media_client_kind kind;
media_client_kinds kinds;
media_node node;
uint32 padding[16];
@ -54,7 +54,7 @@ private:
typedef struct media_connection {
media_connection_id Id() const;
media_connection_kind Kind() const;
media_connection_kinds Kinds() const;
const media_client& Client() const;
@ -86,7 +86,7 @@ private:
media_format format;
char name[B_MEDIA_NAME_LENGTH];
media_connection_kind kind;
media_connection_kinds kinds;
uint32 padding[16];
friend class BMediaClient;

View File

@ -30,11 +30,11 @@ public:
virtual ~BMediaConnection();
const media_connection& Connection() const;
BMediaClient* Client() const;
media_connection_id Id() const;
const char* Name() const;
BMediaClient* MediaClient() const;
bool IsInput() const;
bool IsOutput() const;
@ -68,7 +68,8 @@ public:
status_t Release();
protected:
BMediaConnection(media_connection_kind kind);
BMediaConnection(
media_connection_kinds kinds);
// Those callbacks are shared between BMediaInput and BMediaOutput
virtual void Connected(const media_format& format);

View File

@ -35,8 +35,8 @@ public:
BSimpleMediaClient(const char* name,
media_type type
= B_MEDIA_UNKNOWN_TYPE,
media_client_kind
kind = B_MEDIA_PLAYER
media_client_kinds
kinds = B_MEDIA_PLAYER
& B_MEDIA_RECORDER);
virtual ~BSimpleMediaClient();

View File

@ -14,7 +14,7 @@
BMediaClient::BMediaClient(const char* name,
media_type type, media_client_kind kind)
media_type type, media_client_kinds kinds)
:
fLastID(0)
{
@ -24,7 +24,7 @@ BMediaClient::BMediaClient(const char* name,
_Init();
fClient.node = fNode->Node();
fClient.kind = kind;
fClient.kinds = kinds;
}
@ -52,12 +52,12 @@ BMediaClient::InitCheck() const
}
media_client_kind
BMediaClient::Kind() const
media_client_kinds
BMediaClient::Kinds() const
{
CALLED();
return fClient.kind;
return fClient.Kinds();
}

View File

@ -16,6 +16,13 @@ media_client::Id() const
}
media_client_kinds
media_client::Kinds() const
{
return kinds;
}
media_connection_id
media_connection::Id() const
{
@ -23,24 +30,24 @@ media_connection::Id() const
}
media_connection_kind
media_connection::Kind() const
media_connection_kinds
media_connection::Kinds() const
{
return kind;
return kinds;
}
bool
media_connection::IsInput() const
{
return Kind() == B_MEDIA_INPUT;
return Kinds() == B_MEDIA_INPUT;
}
bool
media_connection::IsOutput() const
{
return Kind() == B_MEDIA_OUTPUT;
return Kinds() == B_MEDIA_OUTPUT;
}

View File

@ -29,11 +29,11 @@ BMediaClientNode::BMediaClientNode(const char* name,
CALLED();
// Configure the node to do the requested jobs
if (fOwner->Kind() & B_MEDIA_PLAYER)
if (fOwner->Kinds() & B_MEDIA_PLAYER)
AddNodeKind(B_BUFFER_PRODUCER);
if (fOwner->Kind() & B_MEDIA_RECORDER)
if (fOwner->Kinds() & B_MEDIA_RECORDER)
AddNodeKind(B_BUFFER_CONSUMER);
if (fOwner->Kind() & B_MEDIA_CONTROLLABLE)
if (fOwner->Kinds() & B_MEDIA_CONTROLLABLE)
AddNodeKind(B_CONTROLLABLE);
}

View File

@ -8,7 +8,7 @@
#include "debug.h"
BMediaConnection::BMediaConnection(media_connection_kind kind)
BMediaConnection::BMediaConnection(media_connection_kinds kinds)
:
fOwner(NULL),
fBind(NULL),
@ -16,8 +16,8 @@ BMediaConnection::BMediaConnection(media_connection_kind kind)
{
CALLED();
fConnection.kind = kind;
fConnection.id = -1;
fConnection.kinds = kinds;
fConnection.id = 0;
//fConnection.client = media_client::null;
}

View File

@ -9,9 +9,9 @@
BSimpleMediaClient::BSimpleMediaClient(const char* name,
media_type type, media_client_kind kind)
media_type type, media_client_kinds kinds)
:
BMediaClient(name, type, kind),
BMediaClient(name, type, kinds),
fNotifyHook(NULL),
fNotifyCookie(NULL)
{