Commit Graph

58 Commits

Author SHA1 Message Date
Axel Dörfler
f0a1eb2dba * The static object construction and destruction is no longer random, but takes
the internal dependencies into account. This should fix bugs #5166, #5120,
  and #5150.
* Also, the time source object manager, as well as the dormant node manager
  are now recreated on media roster restart (when the media server is
  restarted).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-05 16:53:55 +00:00
Axel Dörfler
6cafce94b5 * Moved the port pool into the new request_data.cpp file; it's no longer
accessible from the outside.
* Instead, request_data now retrieves/releases a reply port on its own.
* There were some more places that still used write_port()/read_port() instead
  of QueryServer().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34597 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 17:40:45 +00:00
Axel Dörfler
5f207b83ae * Moved all server interface definitions from DataExchange.h to
ServerInterface.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34594 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 16:57:22 +00:00
Axel Dörfler
9c3b4706dd * Cleaned up the node manager, got rid of its use of Map, and List.
* Fixed at least two reference counting problems, but nodes from killed teams
  still remain alive (will look into this at a later point).
* GetLiveNodes() is now using transfer_area() as well.
* Made all sizes in the SendTo*() and Query*() functions size_t.
* Replaced reinterpret_casts with static_casts when casting void pointers.
* Ordered the request/reply structures by target.
* Tried to consolidate the use of add_on vs. addon.
* More cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 16:22:24 +00:00
Axel Dörfler
c28dd9fdc3 * Implemented getting/setting the audio gain of media files.
* Renamed "remove_ref_for" command structures and constants to
  "invalidate_item".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-08 19:56:04 +00:00
Axel Dörfler
7e5d04c543 Beware! The following commit will crash your system when open "Sounds"; I'll
look into this now.
* Renamed the MMediaFilesManager to MediaFilesManager.
* Got rid of its Map usage, we're using std::map now instead.
* The media_server is using an unsafe method to transfer areas from the server
  to the client. I've changed this for the BMediaFiles API to use Haiku's new
  transfer_area() function. However, this seems to cause the above mentioned
  problems.
* Improved naming and data exchange structures used for the BMediaFiles API.
* Fixed BMediaFiles leaking its lists.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34554 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-08 14:22:56 +00:00
Axel Dörfler
9dec231042 Sorry for this large commit in advance; it's not really possible to divide this
into smaller parts:

media_addon_server:
* Removed (broken) use of (broken and inefficient) home-brewn Map, and List
  classes. This also fixes a crash on shutdown when used with the malloc_debug
  implementation. It's using stl::vector, and stl::map now instead.

_shared_buffer_list:
* Renamed _shared_buffer_list to SharedBufferList, and put it into the BPrivate
  namespace. Also, made a class out of it.
* Separated shared buffer list creation from cloning.
* Enlarged maximum number of buffers to something that is not that evil, but
  actually uses the space it has (ie. is a useful multiple of
  shared_buffer_info that fills a multiple of B_PAGE_SIZE as much as possible).
* No longer drops into the debugger if the
* The list that is currently used is very inefficient for the features it
  provides though (no change there).

_buffer_id_cache:
* Renamed to BufferCache, and put it into the private namespace
* It now deletes its buffers on deletion; since the BBufferConsumer will be
  gone, too, at this point, there is little chance that there are still buffers
  in use.
* Also, it's now using std::map instead of the (see above) Map class.

BBuffer:
* Got rid of the fBufferID member.

Misc.:
* Got rid of the global "team" variable; the media kit is now using the
  private app kit's current_team() now.
* Added a lot of missing error checks (mostly memory allocations).
* Renamed fields like "flavorid" to flavor_id, renamed "dfi_*" fields to
  something more detailed.
* Moved ServerInterface.h from src/servers/media/ to headers/private/media.
* Notifications.h was not self contained.
* Added missing licenses.
* Lots of cleanups, and coding style fixes.

What this doesn't fix:
* Bug #4954 which started all this (this comes next, though)
* Deinitialization is broken, as the PortPool is uninitialized too early, and
  still used afterwards.
* The strange add-on monitoring code in the media_addon_server


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-05 11:11:28 +00:00
Jérôme Duval
2795d5dca5 Play startup sound after the first defaults rescan is done. This fixed #1902.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34189 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-22 16:26:12 +00:00
Axel Dörfler
8e4966ebca * Applied patch by Adrian to fix the command structures used for the media
server with GCC4 in a GCC2 system (and vice versa). See #4920 which this
  patch closes, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-11 09:16:32 +00:00
Stephan Aßmus
6033e52a83 Implemented support for get_next_encoder() variations from MediaFormats.h.
The AddOnManager in the media_server registers one encoder entry per
successful EncoderPlugin::RegisterNextEncoder(). This gives us a first idea
what media_format_family and input/output media_type is supported. The
mechanism may have to be extended, or the Encoder needs an API to specialize
a format further. In that case, the get_next_encoder() version that takes
optional _acceptedInput/OutputFormat needs to instantiate the plugin and
needs to ask the Encoder. But AFAIK, no app uses it like that anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-31 00:46:36 +00:00
Stephan Aßmus
7cd2513b82 Changed the way Encoders are published by EncoderPlugins. Encoder retrieval
in PluginManager is reenabled. We use the media_codec_info.id to reference
a specific plugin, while the sub_id will be used to reference individual
Encoders that the plugin supports. No idea if that's how it was intented, but
some comments hint in this direction. I failed to mention this before, but
comments are of course very welcome on any of these commits, as always.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31993 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-30 20:05:11 +00:00
Stephan Aßmus
7c06546a8e Implement the backend of get_next_file_format(). The AddOnManager maintains
a list for known media_file_formats. The internal IDs map to plugins.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31950 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-29 22:49:23 +00:00
Stephan Aßmus
c30ef79def Small cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31934 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-29 19:11:50 +00:00
Stephan Aßmus
57bb0b9fcd * Added DataExchange message constants and server communication structs for
retrieving WriterPlugins and EncoderPlugins from the media_addon_server.
* Enabled respective code in PluginManager (and fixed the copy&paste bugs),
  the server side is still missing, though...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-29 16:35:37 +00:00
Axel Dörfler
34c7214442 * BParameterWeb::StartWatching() now just calls BMediaRoster::StartWatching()
as on Dano - since the functionality is already there, those two functions
  aren't really needed, though, so we could remove them again.
* Cleaned up DataExchange.h, and added basic reply/request structs for anything
  that needs an area.
* BControllable now uses a helper class ReceiveTransfer to deal with requests
  with areas.
* Major style cleanup of MediaRoster.cpp, though one could still bury some
  hours there...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 21:17:03 +00:00
Maurice Kalinowski
f4a2c0f945 put enum to appropiate place as pointed out by marcus
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-31 18:14:43 +00:00
Maurice Kalinowski
6938364b39 * Implemented BMediaRoster hooks GetRefFor, SetRefFor, SniffRefFor to access BFileInterface related file functions.
* Implemented BFileInterface class which was nearly empty so far. Added handling of messages passed to BFileInterface class.
* Added needed structs and message values to DataExchange.
* This is needed to get for instance the reader.media_addon to work. Usually one calls above functions to set a file to be decoded by the node. If the target is a consumer, they are used for setting the target for encoding data.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24671 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-30 01:35:58 +00:00
Maurice Kalinowski
999cd0acee * implemented BMediaRoster::StartControlPanel(). It queries a BControllable node with CONTROLLABE_START_CONTROL_PANEL message and returns the result to the caller (thx for help/suggestions from Marcus here). Needed to add appropiate structs and message value to DataExchange.h
* implemented BControllable::StartControlPanel(). The behaviour is supposed to be the one documented in the BeBook, meaning that it first checks if the BControllable node has been instantiated over an BMediaAddOn. If so, we investigate where the addon is located and try to launch it. Thus media_addons which have a control panel need to be compiled as an Application, not as an Addon. See r24664 as an example.
* inside BControllable::HandleMessage() call StartControlPanel for the message.
* MediaNodes having such a ControlPanel are rarely used as parameterwebs should provide you everything. But for instance the vst MediaAddOn uses it and some others do as well.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-29 20:53:01 +00:00
Jérôme Duval
31ebfe61e4 added default sound events
implemented system_beep() by sending an event to the media addon server


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-16 19:15:46 +00:00
Jérôme Duval
33c487a43e implemented add_system_beep_event()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20711 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-15 20:40:12 +00:00
Ingo Weinhold
758b1d0e05 Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
  declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
  explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
  something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
  'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
  is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
  Otherwise the an inner class with that name is considered as friend.
  gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 23:27:14 +00:00
beveloper
28a06094b2 Modified media_server and media_addon_server cration/terminatio.
Now uses application mime sig for start/stopping. Much better
compatibility with libbe.so restarting functions.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-15 20:43:01 +00:00
shatty
8f975d5e5f axel points out that the message loop is already started by the time we get to ReadyToRun, so we can start our friends there
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-03 09:43:46 +00:00
shatty
fa8dbc019d new MediaFormats. node monitoring codec plugin loading. codec mods to support new codec api to retrieve supported formats.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-02 05:26:40 +00:00
Axel Dörfler
86bafc634b Removed now unused get_format_for_description and get_description_for_format
request/reply structures.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6247 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-23 07:44:42 +00:00
Axel Dörfler
8b47303be4 Added a QueryServer() function for BMessage communication.
Added MEDIA_SERVER_GET_FORMATS for the new BMediaFormats implementation.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-23 01:10:46 +00:00
beveloper
046f31f91f update to the codec api, docoder assignment is now handled in the server
multiple reader add-ons are probed to recognize a media file
FormatManager does the translation from media_format to media_description


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5667 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-12-14 19:23:16 +00:00
Jérôme Duval
4446fcac05 Added GetStartLatency handling
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-12-08 08:39:20 +00:00
beveloper
572e60a481 some more changes, no longer using BMediaFormats
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-12-01 22:20:59 +00:00
Jérôme Duval
0a8e9c766a To clear the current entry_ref
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-11-25 10:09:36 +00:00
Jérôme Duval
adcc5beaca Struct and codes for MediaFiles
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-11-12 09:36:48 +00:00
beveloper
01fa698a92 implemented BParameter::SetValue() and BControllable::SetParameterValue()
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-13 12:43:52 +00:00
beveloper
74b216a688 Added BParameter::GetValue() and BControllable::GetParameterValue() data transfer
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-13 00:43:53 +00:00
beveloper
cc2b59509b fixed format negotiation
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3411 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-03 19:01:53 +00:00
beveloper
5917dd5b85 various timing related bugfixes
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3395 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-01 17:18:24 +00:00
beveloper
21871f384e various bugfixes
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-05-26 12:58:06 +00:00
beveloper
359ac30644 Added automatic loading of physical input and output nodes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-05-25 21:16:53 +00:00
beveloper
f46925ed35 Parameter web support
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3097 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-04-22 23:06:51 +00:00
beveloper
4d6911ee07 fixed latency calculation
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-23 01:11:33 +00:00
beveloper
626824eaaf Added reference counting of media add-on instances.
You can't create more node instances than "possible_count".


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-22 01:11:07 +00:00
beveloper
54187cc6e8 Global nodes can mow be released by the teams which created them.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2923 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-16 03:52:52 +00:00
beveloper
cf4e227786 fixing BMediaRoster::ReleaseNode()
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2915 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-14 23:12:11 +00:00
beveloper
57c59a5377 Improved error handing and timeouts.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-14 14:04:59 +00:00
beveloper
7fd432700b Updated time source code to allow automatic starting and stopping of time sources.
Sending run mode changes and broadcasting of time changes is also implemented.
For one reason or another, all this doesn't work right now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2520 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-20 01:11:15 +00:00
beveloper
287f7492c3 more time source function...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2353 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-03 01:51:22 +00:00
beveloper
bd57171958 Checkpoint.
Started adding support for persistent default nodes.
System time source and BTimeSource are broken.c


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-26 02:23:59 +00:00
beveloper
075570786d changed BufferManager communication to use ports.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-08 23:49:40 +00:00
beveloper
6396865dcd added automatic media_addon_server launching and termination.
added detection of and cleanup after application crashes.
if the media_addon_server crashes, it will be restarted.
removed preleminary volume control functions.
removed unneeded media_server functions.
changed application registration to use port based messaging.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2027 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-20 01:28:23 +00:00
beveloper
dfb2ad6148 code cleanup
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-03 16:03:23 +00:00
beveloper
570f7d0456 updated to include the same features/bugs as the screenshot in today's news.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-10 18:55:47 +00:00