root/headers/private/media/MediaMisc.h
/*
 * Copyright (c) 2003 Marcus Overhagen.
 * All Rights Reserved.
 *
 * This file may be used under the terms of the MIT License.
 */
#ifndef _MEDIA_MISC_H_
#define _MEDIA_MISC_H_


// Used by Haiku apps to make media services notifications
void
progress_startup(int stage,
        bool (*progress)(int stage, const char* message, void* cookie),
        void* cookie);

void
progress_shutdown(int stage,
        bool (*progress)(int stage, const char* message, void* cookie),
        void* cookie);


#define IS_INVALID_NODE(_node)                  ((_node).node <= 0 || (_node).port <= 0)
#define IS_INVALID_NODEID(_id)                  ((_id) <= 0)
#define IS_INVALID_SOURCE(_src)                 ((_src).port <= 0)
#define IS_INVALID_DESTINATION(_dest)   ((_dest).port <= 0)

#define NODE_JUST_CREATED_ID                    -1
#define NODE_UNREGISTERED_ID                    -2
#define NODE_SYSTEM_TIMESOURCE_ID               1

#define BAD_MEDIA_SERVER_PORT                   -222
#define BAD_MEDIA_ADDON_SERVER_PORT             -444

#define IS_SYSTEM_TIMESOURCE(_node)             ((_node).node == NODE_SYSTEM_TIMESOURCE_ID)

#define NODE_KIND_USER_MASK                     0x00000000FFFFFFFFULL
#define NODE_KIND_COMPARE_MASK                  0x000000007FFFFFFFULL
#define NODE_KIND_NO_REFCOUNTING                0x0000000080000000ULL
#define NODE_KIND_SHADOW_TIMESOURCE             0x0000000100000000ULL

#define ROUND_UP_TO_PAGE(size)                  (((size) + B_PAGE_SIZE - 1) & ~(B_PAGE_SIZE - 1))

#define MEDIA_SERVER_PORT_NAME                  "__media_server_port"
#define MEDIA_ADDON_SERVER_PORT_NAME    "__media_addon_server_port"

#define BUFFER_TO_RECLAIM                               0x20000000
#define BUFFER_MARKED_FOR_DELETION              0x40000000


extern const char *B_MEDIA_ADDON_SERVER_SIGNATURE;

namespace BPrivate { namespace media {
        extern team_id team;
} } // BPrivate::media

using namespace BPrivate::media;

#endif