Commit Graph
100 Commits
Author SHA1 Message Date
Stephan Aßmus b03f6b7126 Fix coding style and improve readability and correctness.
(value != 0 != value == 1).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-01 21:31:07 +00:00
Stephan Aßmus d1b6305cd9 Forward important properties and setters of the private BSplitLayout
in the BSplitView class, related to getting and setting item weights
programatically.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40048 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-01 12:08:49 +00:00
Stephan Aßmus 1812583c05 Fixed spacing in Style group layout. (ticket #6553)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39894 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-19 12:17:20 +00:00
Stephan Aßmus aed19c751b * Coding style cleanup.
* Removed R5 versions of the code, since I don't believe
   other parts of Icon-O-Matic still compile on R5...
 * No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-19 12:14:49 +00:00
Stephan Aßmus 32ba4befc4 Make the list view focused by default, this allows to use DriveSetup with
the keyboard and fixes ticket #4746. I did not test creating new
partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39892 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-19 11:01:47 +00:00
Stephan Aßmus b9d2622de1 Since "Mount all" is not connected to a selected disk/partition,
the Partition menu shall never be disabled. Fixed enabled state
of some other menus/entries after this change. Fixes ticket #6783.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-19 10:55:36 +00:00
Stephan Aßmus 22334353d0 Only print unexpected errors to stderr when constructing the settings file.
Fixes ticket #6899. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39890 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-19 10:44:20 +00:00
Stephan Aßmus 1e9af0512d Patch by jscipione: Check valid input value range
for some MAPM functions, since they will otherwise
just return 0, instead of indicating an error.
Thanks! Fixes ticket #6398.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-19 10:34:55 +00:00
Stephan Aßmus b6ec842de4 Patch by x-ist from ticket #6115:
* A lot of HID definitions got extracted from USB_hid.h into their
   own files. Many more definitions have been added from the specs.
 * The names have been moved into the proper B_* namspace.
 * The USB hid driver has been adapted for the changes.

Thanks a lot and sorry for the delay!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 20:23:56 +00:00
Stephan Aßmus 7730c84696 Improved layout of controls and more cleanup. There is now a splitter
between the source file list and the controls on the right, and ticket
#6985 is fixed. A lot of issues and quirks remain with this application.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-15 17:31:57 +00:00
Stephan Aßmus 0a81944d5d More cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39854 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-15 10:47:02 +00:00
Stephan Aßmus f086ada784 * Applied patch from Barrett (ticket #6497) which fixes some issues
with the previous patch from him.
* More cleanup by myself in MediaConverterWindow::MessageReceived(),
  no functional changes intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-15 10:34:58 +00:00
Stephan Aßmus d277bc8294 Since the function keys don't serve any purpose yet, make F2 enter renaming
mode for the first selected item (i.e. just like Cmd-E). This makes Tracker
behave as Windows Explorer and at least Nautilus in Ubuntu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39744 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-05 19:15:57 +00:00
Stephan Aßmus ea8a421c0c Run the AddOnManager after having loaded add-ons on the InputServer
thread. After fixing the internal locking of AddOnMonitorHandler in
r38235, running the AddOnManager before scanning add-ons could lead
to a dead-lock in case devices appeared while the input_server was
still initializing. This hopefully fixes #6760 and possibly also
#6819. I've tested in both qemu and on real hardware (quad-core with
3 mice, one tablet and 3 keyboards connected). I've also tested
hot-plugging devices, which still works as expected. The problem may
have already been fixed in the preceding changeset, by elliminating
an extra involved looper. Since node monitor messages were actually
received on the wrong looper, using the looper lock in AddOnManager
did not have the intended effects.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-05 15:10:50 +00:00
Stephan Aßmus 509a3787b1 Eliminate the second add-on monitor looper by inheriting AddOnManger
from AddOnMonitor. This solves a concurrency problem in the AddOnMonitorHandler
implementation which called into AddOnManager private methods on the wrong
looper thread without locking. Would have corrupted memory when unplugging
input devices during input_server initialization (so normally not encountered).
The code paths for adding devices were locking already, since those can be
called from other threads as well and this was anticipated.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-05 15:03:11 +00:00
Stephan Aßmus 445751e17a Refactored AddOnMonitor to allow an alternative constructor which does not
yet take the AddOnMonitorHandler (and also does not Run() the looper
automatically). Added SetHandler() method which allows to set the handler
afterward. Does not require updates in existing clients.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39740 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-05 14:59:27 +00:00
Stephan Aßmus 1f1db8cf7e Brought the public methods in declaration order.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-05 11:54:38 +00:00
Stephan Aßmus 506a7b97c1 Prevent the shutdown dialog from minimizing without an entry
in Deskbar (registrar is a background application). Fixes ticket
#6809.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-10 10:51:47 +00:00
Stephan Aßmus c8fa948b2a close() is defined in unistd.h as per the OpenGroup. Hope this
works on all host platforms, fixes the build on Linux at least.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39384 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-10 09:02:15 +00:00
Stephan Aßmus 8e61947230 Don't leak file descriptors.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-09 23:28:07 +00:00
Stephan Aßmus e6cb8eb4c6 * Reuse the check for changed location which decides whether
to Invoke() in MouseUp() in the code path for keyboard control.
   Should fix ticket #6792, but I have not actually tested it.
 * Don't post notification values in KeyDown() when the value did
   not change because it was constrained between min and max values.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-06 12:43:24 +00:00
Stephan Aßmus fdca7b0ff3 Applied rest of kalibers patch from ticket #6349. The logging
function in the common accelerant code wasn't public in the first
place and the patch was a correction for r37670, sorry for
missing that. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-06 11:33:59 +00:00
Stephan Aßmus 4c9da6dc09 Applied patch by kaliber from ticket #6349. which fixes quite a
few warnings. Thanks! I did not apply the hunks about moving
a logging function in the common accelerant code to be static.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-06 10:17:41 +00:00
Stephan Aßmus 08e6655afe Patch by kaliber (ticket #6333): Removed many instances of
passing an additional -Wall to the compiler, which may actually
have unwanted effects. -Wall is standard by the build system.
Also, -Wno-multichar was passed unnecessarily for Haiku targets.
I didn't remove it for the bfs_shell, hope this is what Ingo meant
in the ticket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39314 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-05 20:31:11 +00:00
Stephan Aßmus 21c8f94c7d I don't understand much about the code in question, but the ticket #6789
hints at a possible problem: Within the process_options() function, the
code does not make sure that size is a multiple of the option length
(unless I missed something) and thus the loop could wrap the unsigned
size variable, and not exit as intended. Make size an ssize_t and cast
where appropriate, after making sure it's initially a positive value.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-05 17:39:15 +00:00
Stephan Aßmus 766bc131b4 Integrated the test from the "Services Kit" GSoC project. The urlRequest tests
don't currently compile since not all of the Services Kit classes are included
in the build ATM.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39163 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-27 14:16:51 +00:00
Stephan Aßmus eb3504793b Added the new headers to the NetworkKit.h all-in-one header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-27 14:16:19 +00:00
Stephan Aßmus 45939109b4 Patch done by Christophe Huriaux as part of GSoC 2010 "Services Kit" project:
Integrated the classes in the Network Kit (libbnetapi.so). Only the foundation
classed BUrl, BUrlContext, BNetworkCookie, BNetworkCookieJar and the private
HttpTime code is currently compiled. The BUrlProtocol currently contains some
misplaced BUrlProtocolHttp specific stuff, and the HTTP stuff itself has a
dependency on libcrypto and should live in an add-on instead. I've sprinkled
some TODOs in the code, and I've done some renaming compared to the last
version of the GSoC patch. Any help to bring this further along is appreciated.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39161 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-27 14:03:31 +00:00
Stephan Aßmus e66d0f5520 Patch by Barrett: Check for errors when obtaining information
about the contained tracks from media files. Display an alert
accordingly. Fixes ticket #6497. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-26 16:32:39 +00:00
Stephan Aßmus 707466cad1 Part of a refactoring/rewrite I was once working on,
work in progress, don't remember how far I got. Supposed
to extract the image file and document page navigation
from ShowImageView. Not included in build. Untested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 23:17:16 +00:00
Stephan Aßmus 43eea4c2c4 Apparently it does not work... convert to TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 22:56:50 +00:00
Stephan Aßmus 76d9e05341 Introduce a new flag for drawing BBitmaps, B_WAIT_FOR_RETRACE
which triggers waiting on the retrace semaphore in app_server
just before drawing the bitmap. This potentially removes any
additional delay when doing this client side. Completely untested. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39097 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 22:22:45 +00:00
Stephan Aßmus ed55cb5a22 Cache the retrace semaphore. Use the right kind of locking
in the method that needs it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39096 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 22:19:43 +00:00
Stephan Aßmus 550cf8fa5c Wait for the vertical retrace before blitting a bitmap,
should avoid tearing in the video on supported graphics
drivers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39094 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 20:57:25 +00:00
Stephan Aßmus d129a68a72 Removed dead code and updated copyright.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39082 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 20:08:40 +00:00
Stephan Aßmus 657983b8c2 * Introduce some currently disabled code to store the AVCodecContext
pointer in the media_format user data section.
 * In the AVCodecEncoder, optionally use the AVCodecContext pointer
   from the AVFormatWriter instead of its own instance. The problems
   I am investigating are not improved by this, but it may be needed
   anyway.
 * Map the bitrate for audio to a fixed table. Certain encoders will
   refuse to use a non-standard bitrate, like the currently enabled
   AC-3 encoder.
 * Fixed tracing output in _EncodeAudio().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39039 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-21 10:29:20 +00:00
Stephan Aßmus bb188e4d73 Fix crash introduced as a last minute change... need to
find a way to do this properly, though. The pixel format
selected by AVCodecEncoder should match here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39037 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-20 22:01:24 +00:00
Stephan Aßmus 69372b5545 * Change the signature of the Writer plugins setup methods such
that they can modify the media_format passed in. For example they
   can store information in the user_data section. I don't actually
   use this anymore, but it may come in handy again.

AVFormatWriter:
 * Adjust the AVCodecContext flags not only for video, but also
   for audio streams (as the API example does). This mechanism
   may not yet work, since the AVCodecEncoder actually uses a
   different AVCodecContext instance.
 * Use the encodeInfo->flags and specify the key frame flag
   for the AVPacket. This finally makes videos encoded on Haiku
   seekable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39035 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-20 21:36:23 +00:00
Stephan Aßmus 6e544b050e Enable the MJPEG encoder.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39034 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-20 21:29:16 +00:00
Stephan Aßmus 7d5bc29832 * Removed a big chunk of dead or outdated code. It was really
hard to see the big picture and tell what actually works
   in the higher levels of the code.
 * Coding style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39033 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-20 21:28:18 +00:00
Stephan Aßmus 88eddd3d71 * Specify length of Group of Pictures as in API example.
* Don't hardcode PIX_FMT_YUV420P, but use the color space
   from the list of codec supported ones which has the best
   quality.
 * Maintain media_encode_info->flags by specifying whether
   a chunk contains a keyframe. According to the libavformat
   API example, all audio chunks are keyframes. For video
   chunks, use the fContext->coded_frame->key_frame flag.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39032 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-20 21:25:43 +00:00
Stephan Aßmus dc8dd201f8 * Replaced %Ld with %lld in printf output
* Prettify layout of final stats output of checkfs
   based on patch by engleek from ticket #4277.
 * Fixed minor coding style violation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38996 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 09:34:36 +00:00
Stephan Aßmus eca9668a4a Enable DV format (muxer) and DV encoder. It works, but only for
certain video sizes (720x576 for example) and with 48 kHz raw
audio. Clockwerk actually uses a mechanism which worked on BeOS
to check if an encoder would accept a certain media_format, but
this does not yet work on Haiku and thus the format is available
even when trying to render later will fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38978 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 15:27:16 +00:00
Stephan Aßmus fb39b6c84d Enable compilation of some files necessary for FLAC and AAC encoding.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38977 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 15:23:49 +00:00
Stephan Aßmus c0803bc585 My "fix" to the MPEG4 encoder was wrong. The h263 encoder had to
be enabled in config.h. That's the case now, but I did this change
later and didn't realize it would fix MPEG4 encoding.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38976 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 15:17:32 +00:00
Stephan Aßmus ec3e003296 * Refactored calculating the bitrate based on raw bitrate
and quality in audio and video AVCodecContext setup code
   paths.
 * Disabled some debug output


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38975 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 15:12:25 +00:00
Stephan Aßmus 7c143ae93e Long overdue coding style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38974 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 15:04:24 +00:00
Stephan Aßmus 01af3c69af Updated Clockwerk package one more time to fix
another crash at exit bug for which there is
even a ticket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38968 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-13 21:06:09 +00:00
Stephan Aßmus 7536ad8142 Updated Clockwerk optional package.
* The GUI has been reworked to fix a lot of issues
   and to be more efficient (for example no backbuffered
   views are necessary on Haiku).
 * Mouse wheel zooming in the video preview uses the mouse
   position as anchor.
 * Several crashing at exit bugs have been fixed.
 * Rendering of audio/video happens interleaved now.
 * The annoying prompt to save the project when nothing
   changed is fixed.
 * The quick intro documentation has been updated as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-13 19:44:51 +00:00
Stephan Aßmus 9d570aa4dd Some drawing mode implementations actually use the color
passed to the pixel format methods. Don't use a dummy color
for drawing dots. (Untested, but should fix Clockwerk time
line objects drawing)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38955 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-12 09:48:12 +00:00
Stephan Aßmus 41457111ec * Try harder to seek somewhere and fall back to seeking
to the beginning of the stream by bytes, if all else
   fails.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-29 15:20:12 +00:00
Stephan Aßmus 06d9236554 Enable H263 encoders.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-29 15:18:30 +00:00
Stephan Aßmus 96590b5bf7 * Do no manually allocate the buffer for the
ByteIOContext. libavformat may reallocate it
   on demand, we need to use the matching allocation
   methods.
 * Init the ByteIOContext with the proper "write flag".
   This solves a busy loop when writing the trailer of
   MKV files, since the first buffer was initially skipped
   and the MKV muxer can not seek back in the stream
   where it wants.
 * Get rid of the fCalculatePTS member, and calculate
   PTS of audio packets as well. I don't remember why
   I prevented that, however VLC complains about audio
   packets having wrong PTS (with or without this change)
   Our own MediaPlayer plays videos generated by (a modified)
   Clockwerk at least once, but seeking subsequently fails.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-29 15:17:35 +00:00
Stephan Aßmus 8218710526 Do not write an audio packet if the encoder has not produced
any encoded data yet. Fixes encoding of Vorbis audio.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-29 15:11:28 +00:00
Stephan Aßmus 8be096e0f7 Fix codec initialization. The mpeg4 and h263 codecs were split,
and there is also ituh263enc.c, of which I am unsure how it
fits into the picture. However the mpeg4 encoder is using a "RL"
table of the h263 encoder, and it appears it was forgotten to
make sure it's initialized when splitting these files. Should
be upstreamed. Fixes a crash when trying to use the MPEG4 encoder.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38847 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-29 10:07:14 +00:00
Stephan Aßmus e65a6eb2e0 * Give some options for subtitle placement and size.
* Optimize subtitle drawing when subtitles are to be
   displayed at screen bottom versus video bottom, and
   the subtitle frame does not intersect the video. In
   that case we only need to draw it when it changes
   (or is to be removed). Fixed the dead-lock problem
   in a nicer way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 21:43:39 +00:00
Stephan Aßmus 47e9b53fe4 Fix some coding style violations (case scope blocks get their
opening parenthesis on a new line & 80 chars/line limit).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38837 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 17:32:20 +00:00
Stephan Aßmus 395346c411 Patch by Matthias: The residue field is not maintained
correctly by all USB devices, so calculate it instead.
Gets some USB disk devices working like the SuperTOP.
MacOS X is doing the same thing, as researched by Jérôme.
Closes ticket #6604. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38836 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 17:30:15 +00:00
Stephan Aßmus a574c5ce13 For the time being, don't enable a shared BBufferGroup
in overlay mode. Added TODO, since it should be fixed
eventually. There seems to be a problem with mapping
the BBitmap area into a BBuffer (video stays black).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 11:04:07 +00:00
Stephan Aßmus 01e0d3278a * Use asynchronous bitmap drawing in VideoView. Wouldn't matter much, though.
* In SubtitleBitmap, if we ever take too long to generate a subtitle bitmap
   with the drop-shadow, fall back to outline mode. The StackBlurFilter is
   extremely fast, though, so there isn't a huge difference. It can fix some
   jumps in the video when switching subtitles in fullscreen mode, though.
 * Introduce overlay mode to SubpixelBitmap. It uses the black outline then
   and disables font anti-aliasing (just for the outline).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 10:57:54 +00:00
Stephan Aßmus 619ccfae94 * Removed a line of long-dead code.
* Make sure that turning off anti-aliased font rendering
   also works when subpixel-anti-aliasing is used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-28 10:33:51 +00:00
Stephan Aßmus 424c4f3bdf Fixed dead-lock when seeking with the video paused. Should come
up with something better...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-27 20:44:17 +00:00
Stephan Aßmus ec646de243 Coding style fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38829 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-27 20:43:31 +00:00
Stephan Aßmus c8ccdf5203 * Added basic support for SRT subtitle files. It only works
if the SRT file is placed alongside the current playlist
   item under the same name (sans extension). The name of the
   language is taken from the file which needs to be separated
   by a dot (should be improved).
 * Instead of the black outline, subtitles have a nice drop
   shadow now, which is easier on the eyes somehow.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38827 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-27 15:26:41 +00:00
Stephan Aßmus 4ad39ed76d * Improve clarity of some code.
* Preserve transparency of default color when color
   changes via tag.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-27 09:43:55 +00:00
Stephan Aßmus ed74106bcb * Added more comments to the code.
* Cleanup ParseStates in case the input didn't have
   all closing tags.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 20:32:38 +00:00
Stephan Aßmus 676c1e9694 Let client applications set a DrawingMode() which will be the
default drawing mode for text rendering. Don't override it
with B_OP_COPY (still the default). Should not have any
consequences in any existing use-case. The MediaPlayer can
use BTextViews to render semi-transparent subtitles this way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 20:25:57 +00:00
Stephan Aßmus 25fb0e67fd Added SubtitleBitmap class which can create a transparent
BBitmap from a subtitle line as found in SRT files. It
supports all tags except positioning (should probably be
handled in upper layers anyway). The parsing is simplistic
but should be robust. The layout of text is handled by an
offsreen BTextView. VideoView can be given a subtitle
string.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38822 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 20:24:04 +00:00
Stephan Aßmus dce7934b8d Added support for one more non video/audio MIME type.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38821 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 20:21:28 +00:00
Stephan Aßmus a58469f56e Allow to set the false bold width in BTextView style runs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 12:49:57 +00:00
Stephan Aßmus b6d5916a70 Since a lot of MediaPlayer code would actually
not compile on BeOS anymore, I've removed the
BeOS versions from the rest of the source.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 09:52:20 +00:00
Stephan Aßmus 749df748eb Propagate the error from CreateBuffers() in Connected().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-26 09:45:07 +00:00
Stephan Aßmus cc3a891e38 Only claim specific support for multi-media file types that
don't belong to the audio or video super type. All other files
should now open automatically with MediaPlayer since r38810
even without it claiming direct support for them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-25 14:50:18 +00:00
Stephan Aßmus a4b60639b1 Patch by plfiorini from ticket #4501. Untyped FLV movies
shall be auto-identified. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38811 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-25 14:47:58 +00:00
Stephan Aßmus 08ac2a4987 I don't quite understand why the preferred handler of
the super type is only regarded for "installed" MIME types.
The comment says that uninstalled MIME types are assumed
to be application MIME types, but this is clearly not always
the case. Initializing the secondary signature regardless
fixes the problem that unkown document MIME types open in
a random application, even though their super type has a
preferred handler. If the type is indeed an application
itself, I suppose no harm is done, since the primary
signature takes precedence anyway. Closes ticket #4501.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38810 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-25 14:43:25 +00:00
Stephan Aßmus 73dcf86fdc * Don't create Stream cookies for unsupported media formats.
Some test clips with sub-title tracks would hang MediaPlayer
   without this fix here.
 * Optimize FindKeyFrame() and Seek(), check the range between
   last requested/reported frame and bail out early with the
   same result. Seems to fix MediaPlayer starting to drop frames
   when it got caught up in a keyframe finding party...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38808 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-24 20:14:10 +00:00
Stephan Aßmus af0f809b75 Rewrote finding keyframes and seeking. The problem was that
in many situations, FindKeyframe() was unable to reliably
predict what frame Seek() would be able to seek to.
 * Refactored a new base class StreamBase from the old
   StreamCookie, renamed StreamCookie to just Stream.
 * In FindKeyframe(), Stream will create a "ghost" StreamBase
   instance. That one will be used to actually seek in the
   stream without modifying the AVFormatContext of the real
   Stream. From that we can tell what position we can /really/
   seek to. For AVIs mostly, it is important to still use
   av_index_search_timestamp(), since for many AVIs I tested,
   reading the next packet after seeking did not produce a
   timestamp, however the index entry contained just the correct
   one. If the next packet does contain a PTS, it will still
   override the index timestamp, though.
 * Contrary to my previous belief, there was still a locking
   problem with how MediaPlayer used the BMediaTracks. The video
   decoding thread and the playback manager both used
   FindKeyframe() without holding the same lock. We support this
   now by using one BLocker per Stream. (The source BDataIO is
   still protected by another single lock.) With the new ghost
   stream stuff, the locking problem became much more of a problem,
   previously the FindKeyframe() had a much rarer race condition
   which would only trip when the decoding thread would cause new
   index entries to be inserted into the index.
 * Use the same ByteIOContext buffer size that avformat would be
   using if it initialized the ByteIOContext through other API.
 * Don't leak the probe buffer in case of error.
 * Don't leak the ByteIOContext buffer in the end.
 * Do not discard other stream packets anymore, this makes the
   ASF demuxer happy and ASF files can now be seeked as well as
   with ffplay itself.

With these changes, all my MPEG test streams work. Some could be seeked
before, but would show bad artifacts. Some streams would completely loose
video after seeking once. My MPEG2 test stream works much better now,
although audio is slightly out of sync, unfortunately. All my test AVIs
work as good as before, MP4 and MKV still work perfectly. The single
test ASF I got is now perfectly seekable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38807 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-24 16:54:42 +00:00
Stephan Aßmus 954d70d8c0 * Renamed fAudioTempPacket to fTempPacket and use it for calling
the new video decoding function. This just avoids a warning
   generated from the libavcodec sources. The function used before
   did the exact same thing...
 * Maintain fStartTime correctly in _DecodeVideo(). Don't overwrite
   it with a calculated starttime in Decode(). This will allow drift
   to bubble up to the higher layers.
 * Do not use the previously required hack to close and reopen the
   AVCodec after seeking. avcodec_flush_buffers() seems to work
   fine now, and for certain stream types (MPEG1, MPEG2 video for
   example) the keyframe is correctly used after seeking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38806 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-24 16:40:56 +00:00
Stephan Aßmus a92abad742 In the unexpected case that an extractor seeked forward while we actually
asked to seek backwards, cause us to produce silence. This fixes some
occasionally very unpleasant noise after seeking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-24 16:35:11 +00:00
Stephan Aßmus c1e73fbf52 Enabled any and all decoders and demuxers which are currently compiled into
FFmpeg. It's a bit sad, but this obsoletes pretty much all other decoder
and reader plugins. Some of them were built on external libraries as well
(AC3 (not part of default image anyway, since it's GPL), APE, MusePack),
so it's not really a big difference to using FFmpeg as external library.
The format matching is greatly simplified by using B_MISC_FORMAT_FAMILY
for everything but raw audio, and the actual FFmpeg CodecID as codec tag.
The downside of this is that the AVFormatReader can no longer be used with
other decoder plugins, but it would be easy to add special cases for native
decoders we wish to support. Obviously the out of the box support for file
formats and decoders has greatly increased with this change, so there has
to be a pretty good reason now for writing a "native" decoder or reader.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38786 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-22 11:10:51 +00:00
Stephan Aßmus 9291985ba8 * Exchange the round knob for a standard block thumb again,
albeit a smaller one. Makes the interface look even more
   standard Haiku-like.
 * Make sure the volume slider has a reasonable minimum width.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38765 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 18:37:14 +00:00
Stephan Aßmus fd5c34224c * Show the window when opening files, since that shows the nice
"opening file bla" message and makes starting MediaPlayer feel
   even more snappy.
 * Show the window at the no-video location when opening files.
 * Move the "Drop files to play" message handling into MainWin
   and make sure it shows after failed attempts to open a file
   when the playlist is still empty.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38764 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 16:04:24 +00:00
Stephan Aßmus ad471f9969 Typo
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38763 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 16:01:56 +00:00
Stephan Aßmus 80fc6f9e47 Claim support for Shockwave videos.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38762 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 16:01:35 +00:00
Stephan Aßmus d62aaeb68d * Changed pretty extractor names to sentence casing.
* Enabled SWF demuxer in FFmpeg (though the one test file
   I have is compressed, which is not supported by the FFmpeg
   SWF demuxer...).
 * Removed testing TODOs for demuxers that I tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38761 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 16:00:50 +00:00
Stephan Aßmus 40379e325c * Always assign fSource in _InitReader(), even if we will
wrap it in a BBufferIO. Makes the code cleaner.
 * Check if source is a BFile and propagate InitCheck() of
   the BFile. When trying to open a BMediaFile on a non-existant
   file, it will correctly say the file does not exist instead
   that there is no handler for it. (IIRC there is a ticket
   for this.)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38760 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 15:58:28 +00:00
Stephan Aßmus ebd866299d * Added new Playlist notification ImportFailed().
The PlaylistListView will trigger it when the import command
   failed (happens for example when none of the files are
   media files).
 * Moved displaying the according alert from the import fommand
   into the MainWindow. Show the window if necessary. This fixes
   MediaPlayer just idling in the Deskbar without any window
   in this case, since the MainWindow is shown after the first
   call to _SetupWindow() since some time. But _SetupWindow() is
   not invoked when no file could be opened.
 * Removed some meanwhile useless debug output. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38757 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-21 14:47:21 +00:00
Stephan Aßmus 5051e989f6 Committed more than I intended to in the last commit. Sorry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38748 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-20 19:05:06 +00:00
Stephan Aßmus b145959bdd * Use the same GCC flags for GCC4 that configure in the FFmpeg source
itself generates.
 * For GCC2, FFmpeg uses -fPIC instead of -DPIC. Also disable SSE for
   GCC2, since that fixes a crash in the SSE version of clear_block().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38747 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-20 19:03:03 +00:00
Stephan Aßmus d3aadcff6c In FFmpeg SVN r22715 (I suppose), there was an optimization done to
speed up VLC table (whatever it is) initialization. Somehow the code
does not work on GCC2. Use the old code we had previously in SVN
minus a flag (INIT_VLC_USE_STATIC) which is no longer used in FFmpeg.
This fixes the GCC2 build of FFmpeg and closes Ã#6643, #6582 and #656.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38746 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-20 18:24:31 +00:00
Stephan Aßmus e111b1c12f For GCC2, the FFmpeg configure script is generating a slightly
different config.h, of which I am adapting the differences in this
commit. Does not change a thing for the broken GCC2 build of FFmpeg.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38745 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-20 18:01:22 +00:00
Stephan Aßmus f70b711fe0 * Flesh out attribute support in PlaylistItem/FilePlaylistItem
some more.
 * Finish refactoring and abstracting BMediaFile/BMediaTrack
   out of the Controller. There is TrackSupplier now and
   MediaFileTrackSupplier. One could now implement another
   PlaylistItem class besides FilePlaylistItem, which provides
   other implementations for TrackSupplier (i.e. for testing
   DVD playback).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 12:07:48 +00:00
Stephan Aßmus d48deeab21 * Coding style.
* Always use keyframes. The BMediaTrack may not be able
   to implement FindKeyFrameForFrame(), so the detection
   may not work even though the track really does use
   keyframes. If it doesn't, then no harm is done anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 12:05:01 +00:00
Stephan Aßmus f4dca596ed Coding style improvements.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 12:03:35 +00:00
Stephan Aßmus 9a52ead33e * Don't try to change the run-mode of the consumer
if it has not been created yet. (Avoids a debug
   message only.)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 12:02:47 +00:00
Stephan Aßmus 3a8771cf17 * Use duration_to_string() to write better playing time
attribute strings (i.e. with separate hour).
 * Write video bitrate attribute.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-19 12:02:00 +00:00
Stephan Aßmus 6df16a01ed * Seeking by bytes works mostly correctly now. In some
mpgs, the video does not recover, though.
 * Remember the last reported keyframe information, so we
   avoid rounding artifacts. Not as effective, since we
   cannot use stream time-base for seeking, but have to use
   it for finding the keyframes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-18 15:11:50 +00:00
Stephan Aßmus 2e54e93fbf Finall changed the Seek() method of Decoder plug-ins to
SeekedTo(), since it's only informative to decoders. They
can't modify the seeked frame/time. This also mirrors what
all existing decoders were doing in Seek(). BMediaTrack
is simplified accordingly (resolved two TODOs).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-18 14:44:22 +00:00
Stephan Aßmus 5bacae95fe Make use of the new meta-data API and display the
audio track menu item label as the language of the
track.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38688 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-17 08:33:25 +00:00
Stephan Aßmus d174a87e1b If we still have our own BBufferGroup separate from
the used BBufferGroup (from consumer), make sure to
delete that one as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38687 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-17 08:32:27 +00:00