Commit Graph
100 Commits
Author SHA1 Message Date
Stephan Aßmus f594f19bfb Another patch by Jeroen Oortwijn:
It completes the previous patch to the Installer, this time in the Installer
FinishScript, to support making volumes with spaces in their names bootable.
Thanks a bunch!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-17 15:28:03 +00:00
Stephan Aßmus c854f14029 * Cleanup
* Added TODO note with regards to BDataIO streams.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-17 11:58:33 +00:00
Stephan Aßmus f06ec9ec92 Fallback to detecting the stream duration from the AVFormatContext, if the
AVStream does not provide it. For my test Flash Videos, I can at least get
a duration now, although seeking is pretty broken.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31616 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-17 09:32:09 +00:00
Stephan Aßmus 36c088531f * Automatic white space cleanup
* Small hack to display at least some frames (one every 15 frames) when the
  CPU is utterly incapable of decoding video fast enough.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 22:20:43 +00:00
Stephan Aßmus 9c0db3445c Patch by Jeroen Oortwijn:
Escape the mount point, so volumes with spaces in their name can be made
bootable after installing. Thanks a lot! Fixes #4063.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 13:47:11 +00:00
Stephan Aßmus 10b5c1016e Reverted r31604.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 13:02:17 +00:00
Stephan Aßmus c340785238 * Added support for Flash Video (VP6F video and MP3 audio tested only).
* Seeking does not work, since the duration extraction from libavformat does
  not work for this container (maybe there are ways/workarounds but I didn't
  look into it).
* Automatic white space cleanup.

TODO: Add MIME type with sniffer rule.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31605 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 12:59:54 +00:00
Stephan Aßmus 52464b8f9a Couldn't get this to compile with current GCC4 on Haiku without this change,
please someone review.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 12:34:54 +00:00
Stephan Aßmus cc6df7270c Removed the other versions, the first version is awesome, IHMO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31603 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 10:15:27 +00:00
Stephan Aßmus 728fcacd9a Accidentally didn't commit my latest verson.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31594 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-15 19:39:24 +00:00
Stephan Aßmus 97eeaf2256 * Icon for Transmission by zuMi, with tweaks by myself (align handle for 16x16)
* Icon for Beacon by zuMi (I think Ryan had the idea), with many tweaks by
  myself (new and simplified shaft with outline, beams are not cropped, better
  shadow).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31593 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-15 19:37:54 +00:00
Stephan Aßmus 6da40f2e24 Fixed more bugs with re-layouting when switching clips:
* In full screen mode, make sure to relayout the video view if size and/or
  aspect change. Also adjust the window size limits (for later).
* Add optional code to _ResizeWindow() to make sure the window is fully on
  screen. When it is out on one side, move it back in, when it is too large,
  scale and center it so all the border is visible. This code is used when
  switching clips if not in full screen mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31559 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-14 12:50:38 +00:00
Stephan Aßmus d99b6b083f Make sure the window size limits are always up to date.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31558 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-14 12:09:51 +00:00
Stephan Aßmus 095a1f5b8b Use the usual function keys as shortcuts for stepping. (From memory, hope I got
it right...)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31557 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-14 11:47:50 +00:00
Stephan Aßmus 5422febd0b Fixed a few coding style violations and GCC4 warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31555 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-14 11:26:15 +00:00
Stephan Aßmus 3bc54daf84 Patch by zuMi:
* Updated BeHappy icon
* Updated PoorMan icon
* Beacon draft (I don't think it fits so well with the rest of the icons)
* New CF LightBulb


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31554 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-14 10:33:16 +00:00
Stephan Aßmus 84b8519214 A whole bunch of icons, all made by zuMi.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31553 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-14 10:30:02 +00:00
Stephan Aßmus 9ce9e6e458 Resetting the width/height and aspect all at once in my last commit was buggy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31542 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-13 20:04:06 +00:00
Stephan Aßmus f186fa405c * Improvements to the aspect ratio handling. The "Keep Aspect Ratio" setting
is now superfluous.
* When switching aspect ratio and the current video size is 100%, always
  resize such that one side stays at 100% (which would be the height mostly)
  and the other is scaled up (mostly the width).
* In _SetupWindow(), which is triggered by a new stream for example, also
  check if the aspect ratio changed and resize accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31541 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-13 19:58:07 +00:00
Stephan Aßmus 7f96d6194d Fixed accidental removal of licenses in previous commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-12 10:34:19 +00:00
Stephan Aßmus 1dc94c6b69 Fix spelling error in comment. Thanks Joseph!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31513 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 18:51:33 +00:00
Stephan Aßmus b07121279f Keep the mouse at the same location when preventing the screen saver to go
off... solves some weird issues.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31512 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 18:08:30 +00:00
Stephan Aßmus 3621c97fdf Most of our Readers place 1:1 as pixel aspect ratio for undistorted video,
which doesn't seem to be correct from how I read the BeBook. Ignore it for
now which is pretty unlikely to be a problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31511 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 17:59:34 +00:00
Stephan Aßmus 691c650397 Do not set the pixel_*_aspect fields wrongly, just leave them at 0, which
hopefully any app interpretes as to be ignored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 17:49:50 +00:00
Stephan Aßmus c463715d25 Fix the GCC2 build, though I have no idea why this worked on Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31509 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 16:56:13 +00:00
Stephan Aßmus 4cc0f297e9 This seems to be the only change required for the GCC2 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31507 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 14:41:02 +00:00
Stephan Aßmus 4c3fe04bd3 * More cleanup and removal of code duplication in the Jamfiles. Moved
the HAIKU_FFMPEG_DEFINES and friends to the toplevel ffmpeg Jamfile.
* Define the X86 CPU acceleration features in global Jamfile variables,
  so that we can build specific source files depending on those defines
  later (used for libavcodec_x86.a).
* In config.h, a whole bunch of parsers were defined off, which was the
  actual reason why plain old .MPG files and also my .MTS streams with
  H.264 video gave only scrambled video.
* Removed some files from the build by comparing which files are build
  by a pristine FFmpeg libavcodec Makefile.

Attention: The following changes may break the GCC2 build:
* Remove Haiku specific changes from
	- libavcodec/x86/cavsdsp_mmx.c
	- libavcodec/x86/dsputil_mmx.c
	- libavcodec/x86/h264dsp_mmx.c

I will test this next after switching my GCC. If you are impatiant, the
following changes were previously done to the pristine FFmpeg 0.5 files:

libavcodec/x86/cavsdsp_mmx.c:
* commented out line 426 to 429

libavcodec/x86/h264dsp_mmx.c
* h264_loop_filter_strength_mmx2() was commented out.

libavcodec/x86/dsputil_mmx.c
* gmc_mmx() was commented out.
* commented out line 2665 (assigning c->gmc)
* commented out line 2786 (assigning c->h264_loop_filter_strength)

However, I would now make similar changes by checking the GCC version. Also,
the libavcodec/x86/dsputil_mmx.c:2786 was still assigning the dummy
h264_loop_filter_strength_mmx2() version.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31506 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 14:34:11 +00:00
Stephan Aßmus 8ca0ccd187 * Fixed compilation with TRACE_IO defined.
* Improved Seek(). If wence is not SEEK_SET, make sure to check the current
  source position and adjust it to what the stream points to. Also, return
  just -1 on error since this is used for libavformat code. And don't set
  the stream position to the error return value.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31504 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 14:23:47 +00:00
Stephan Aßmus 219858ad31 * Simplified "extra data" handling/allocation code a bit.
* Added debugging facility to dump the first 100 packets of a video stream
  to a debug file on the Desktop.
* When needing to flush packets, avcodec_flush_buffers() is unfortunately
  not reliable. For audio codecs, the work around was to close and reopen
  the codec in Seek(). Do this also for video codecs. Makes H.264 more
  reliable here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 14:20:48 +00:00
Stephan Aßmus c85e773511 Forgot to remove invalid TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:10:29 +00:00
Stephan Aßmus 0f3f344fb4 * Implemented calculating the correct display aspect ratio.
* Removed some dead code.
* Fixed a style violation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:09:23 +00:00
Stephan Aßmus f9aac21f11 Define the proper FFmpeg flag.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:08:00 +00:00
Stephan Aßmus a920a6e2a0 Use media_format pixel_width/height_aspect as it was meant to be used. This
avoids rounding issues (1440x1080 -> 1920x1080 instead of 1921x1080).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:05:55 +00:00
Stephan Aßmus 591ce51a9c Improved error logging.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31476 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-09 13:04:40 +00:00
Stephan Aßmus dec28f85e0 * Better debug output.
* We can actually tell libavformat to discard packets for streams that
  we are not interested in. Found this in the ffplay code. This should hopefully
  avoid the efficiency impact of using one AVFormatContext per stream.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 11:09:49 +00:00
Stephan Aßmus 12a9eb5d93 * Coding style cleanup, some removal of dead code.
* Refactored NegotiateOutputFormat() and Decode() into two separate private
  methods each, one for video and one for audio.
* Keep reading chunks when video decoding, until we have got a picture. This
  gets us scrambled video instead of a black picture for h264 in mpegts.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 09:43:06 +00:00
Stephan Aßmus 0c4d88d353 Added "mpegts" to the supported demuxers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 09:41:00 +00:00
Stephan Aßmus 274f43b917 * Virtualize the stream index and implement finding streams when the
context has AVPrograms. I gather this feature is for container streams
  that contain multiple "groups of streams" like how it would work for
  satilite mpeg-ts streams with multiple TV channels in one stream. For this
  to be properly supported, we should extend the BMediaFile/Track API. For
  now, the AVFormatReader uses the first program, if one is there. This
  was also needed to get make mpegts demuxer work, but it is not yet enabled
  for other reasons.
* Read more probe data. 1024 bytes were not enough to detect "mpegts" properly
  for example.
* For now, I disabled the locking in the AVFormatReader hooks themselves,
  this should not be necessary, though I hope libavformat is reentrant as
  long as you have your own AVFormatContext for each thread. So far everything
  hints that it is the case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31454 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 08:51:31 +00:00
Stephan Aßmus 5d9b65c488 * Dump the libavformat string again in Sniff().
* Separate TRACE output for seeking related methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 22:52:49 +00:00
Stephan Aßmus a612697fc9 Actually, use a more style compliant name, and since the flags don't contain
just architecture specific flags, call them just HAIKU_FFMPEG_DEFINES.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 22:05:00 +00:00
Stephan Aßmus 7486c08251 Avoid some code duplication for setting the architecture depending Cc and C++
flags, using a global variable FFMPEG_PLATFORM_DEFINES.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 21:57:08 +00:00
Stephan Aßmus 922c7be61c Do not leak the first StreamCookie that we used in Sniff() and do not free
in FreeCookie().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 15:05:52 +00:00
Stephan Aßmus f0eb77fee4 Doh, of course we had ASF before! Sorry about that. Must have been blind.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 14:52:50 +00:00
Stephan Aßmus fcb875cdf4 Do no re-use the same packet again if not supposed to. Was not a problem with
how everything currently worked. (Packet peaking was only done once in Init().)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 14:40:09 +00:00
Stephan Aßmus 7965dde0ca Get the AVFormatReader into a usable state. DemuxerTable.cpp controls which
container formats we support. I hope I have turned on only those that don't
have an implementation already (did we support ASF already?). I mostly tested
with AVI and that works reasonably well, but I only tested raw audio so far.
However, the backend for Marcus' avi_reader is much nicer than FFmpeg, so I
think it should stay and have disabled the support for AVI in AVFormatReader.
A big disappointment is that MPG containers only give scrambled video. It may
be a problem of the AVCodecDecoder, but I am not so sure. After all, it works
fine for other container formats. If I am not mistaken, VLC also does not use
the mpeg demuxer from FFmpeg. :-\ On top of that, libavformat detects the
time_base and stream duration wrongly for one of my test MPGs.
As for the implementation: Although seeking in libavformat happens for an
individual stream, in reality, the packets for all other streams need to be
flushed (that's also what happens in the libavformat tutorials I've seen).
Since our MediaKit API allows to seek tracks indivually, this is of course
a no-go, since then all other tracks would be out of sync. My solution is to
simply open the demuxer once for each stream and then completely ignore the
packets of the respective other streams. This also works around the problem
that libavformat is unable to provide packets by stream, requiring the
API user to queue the packets that he needs not now, but later for other
streams. It also means we have to no memory copies, since we can directly
use the packet buffer until the next call to GetNextChunk().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31421 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 13:43:02 +00:00
Stephan Aßmus db627302b7 Support MP2 audio also in MPEG containers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31420 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 13:31:38 +00:00
Stephan Aßmus 88e5472450 Small coding style fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-05 10:52:38 +00:00
Stephan Aßmus 18128d58dc Patch by Raghuram Nagireddy:
Re-use the kernel emulation of the FS shell to implement a FUSE module
for BFS. In theory, it could use any Haiku file system implementation
just like the FS shell itself, but currently only the BFS code supports
being compiled as an FS shell module. The build target is <build>bfs_fuse
On Ubuntu, you would do this:

sudo apt-get install libfuse-dev
jam \<build\>bfs_fuse
mkdir path/to/moundPoint
path/to/bfs_fuse /dev/sdaX path/to/mountPoint

And that will mount your BFS volume at /dev/sdaX
read/write. As this is new code, you should be careful with your
data and expect potential data loss. Not that I don't trust Raghu's
code, but a warning is always better with such things. So far, my
tests have been successful and it is great to finally have write
support for BFS in Linux! Thanks a lot, Raghu, for your great work!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31409 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-05 10:36:30 +00:00
Stephan Aßmus 1c55ed0826 A small correction and one additional tip.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-04 12:31:55 +00:00
Stephan Aßmus 827faf77a4 * Fleshed out some more of the format detection.
* Moved stuff from testing in Sniff() into class members.
* Added function to gfx_utils() that converts an FFmpeg pix_fmt to color_space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-03 21:40:19 +00:00
Stephan Aßmus a244fc3ac7 * It actually helps a lot to turn on all the demuxers if you want to use any.
* The URLProtocol idea seems not to work out, so I removed that code, but
  the other idea of setting up a ByteIOContext actually works, once I seek
  back to the beginning of the stream after reading the initial probe buffer,
  we may also offset the buffer pointer in the ByteIOContext to where we
  have already read, but I am not sure of possible side effects of that.

We can now probe for the correct demuxer and detect streams.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-03 00:26:11 +00:00
Stephan Aßmus b4ef57412c Work in Progress of trying to get libavformat to detect anything...
unsuccessful so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-02 13:31:50 +00:00
Stephan Aßmus 668ed70bd0 * Use a static global object to initialize libavformat and libavcodec.
* Turn off tracing in the AVCodecDecoder which I accidentally turned on in
  a previous commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 21:16:55 +00:00
Stephan Aßmus 53db45b7d3 * Added libavcodec to include dirs of libavformat
* Removed inclusion of internal.h from libavcodec.h, it's not there in the
  plain FFmpeg 0.5 version of the file.
The last item fixes the GCC2 build, at least AFAICT.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 20:39:18 +00:00
Stephan Aßmus 5f25b3a353 Removed ffmpeg build system left-over.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 19:20:52 +00:00
Stephan Aßmus 27f6fb6ce7 * Renamed avcodec folder to ffmpeg.
* Cleaned up plugins Jamfile.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 19:19:49 +00:00
Stephan Aßmus 043eaa5c3f Cleaned up the source file names and code locations in the avcodec plugin,
unified the Reader and Decoder plugins and renamed the add-on to "ffmpeg".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 18:52:48 +00:00
Stephan Aßmus 007ea5873a Extended the ScrollView API a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31357 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 18:50:22 +00:00
Stephan Aßmus cd170ddc34 * Added libavformat. I would like to rename the plugin from "avcodec" to
"ffmpeg" and export multiple plugin types from the same plugin (Decoder and
  Reader).
* Work in progress on an libavformat based Reader plugin, does nothing yet.
* Moved config.h from libavcodec subfolder up one level, so that it's used
  by libavformat as well. Adjusted libavutil/common.h accordingly.
* Turned off GPL code in config.h
* Turned off BeOS muxers in config.h
* Turned on HAVE_THREADS and HAVE_PTHREADS, although that is nowhere used
  in the ffmpeg code (it appears).
* Indentation cleanup in avcodecplugin.h

I have built this with GCC4, but last night I built libavformat.a with GCC2
so I am hoping this doesn't break the GCC2 built.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-01 14:45:20 +00:00
Stephan Aßmus f3797c5ae5 Patch by Jeroen Oortwijn: Improve the tab-key focus-cycle ordering of the
Tracker Settings window. Thanks a lot! Fixes ticket #4051.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-30 16:34:13 +00:00
Stephan Aßmus c8e27e390c Unified the "no menu, border, controls" settings to a single "no interface"
setting and made them available in the context menu again. During my testing,
I couldn't find any weird behavior, only the window dragging should still be
a problem on slower computers when multiple mouse messages piled up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-30 12:47:41 +00:00
Stephan Aßmus 8fb7098371 Cut down on the required number of syscalls by using the new Haiku API
for reading/writing attributes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:35:39 +00:00
Stephan Aßmus 125f5b846c The copy_attributes() loop made one iteration too much trying to read and
write 0 bytes after doing a successful copy of an attribute. Since
fs_write_attr() was actually ignoring the position argument, this would just
clobber attributes and truncate them back to 0 bytes. This was fixed in the
previous commit, however, it should be noted that if the buffer which
copy_attributes() uses were too small, writing attributes which live in the
"small data section" iteratively would not work because of a current BFS
limitation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:13:33 +00:00
Stephan Aßmus 181593ba0b * Properly document why fs_write_attr() does what it does.
* As even the author of fs_attr.c was trying to use fs_write_attr() in an
  unsupported way in the cp copy_attributes() implementation, try to be
  more forgiving and support writing attributes at an offset. The method is
  required to behave inconsistent in that replacing bytes at offset 0 is
  not supported as replacing bytes at any other offset. Writing at offset 0
  will clobber the existing attribute to stay compatible with BeOS.

NOTE: BFS itself still does not support writing attributes at an offset which
are withing the "small data section". To work around this problem, programs
which copy attributes in a loop must make sure that their buffer is large
enough that such "small data section" attributes require only one loop
iteration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:08:43 +00:00
Stephan Aßmus 1f3691df0f * In theory, we should support getting the video aspect from the current stream.
* Added "Force Aspect Ratio" to Video menu and context menu.
* Removed some code duplication in handling the video size messages.
* Added track selection sub-menus to the context menu, replacing the IMHO
  not so important interface settings items.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31302 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-28 18:48:00 +00:00
Stephan Aßmus 07cad22ee7 Connect the Audio/Video track selection menus with the controller. Works great.
Totally "gapless", unlike any other media player I've ever used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31301 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-28 17:42:54 +00:00
Stephan Aßmus 791a4a7774 Fixed building with tracing on...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31275 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:15:29 +00:00
Stephan Aßmus f74eb15c31 Fixed building with tracing on.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31274 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:14:48 +00:00
Stephan Aßmus d8b88d0378 Whitespace cleanup and 80 chars/line fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31273 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:13:58 +00:00
Stephan Aßmus 7f3664f88e Small update.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-27 17:07:13 +00:00
Stephan Aßmus 224fb9cf6e Fixed the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-24 14:59:12 +00:00
Stephan Aßmus c454df7e29 This stuff is actually used on the build host platform as well...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31209 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 14:05:01 +00:00
Stephan Aßmus 4922427769 Implement killing the debugged team on quitting a TeamDebugger, the obviuos
way... thanks Ingo! Seems to work just fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 13:09:50 +00:00
Stephan Aßmus b9563a6fd9 Added NOTE on how to handle QuitRequested in the application and why using
the base class version is fine for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31202 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 12:20:14 +00:00
Stephan Aßmus 04743aeb5f Filled up the quitting code path a bit. The TeamDebugger throws up an alert
asking what to do with the debugged team. Killing it is not yet implemented.
Then it notifies the application about the quit request. That in turn tears
down the TeamDebugger and if no other ones are left, it quits itself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 12:14:05 +00:00
Stephan Aßmus 73b8cef5e6 Sorry for messing in this code, but I was a bit helpless how to fix the GCC2
build in another way...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31200 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 12:12:08 +00:00
Stephan Aßmus b9bbf08852 Small cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 11:05:16 +00:00
Stephan Aßmus e5a5e5da5a * Use auto-size-limits on the window.
* Use insets around everything. The visual change are insets also around the
  source code view. Another option would be to put the source code view on the
  right/bottom, attaching the window border and using a B_DOCUMENT_WINDOW
  resize knob on the window border. The register view could also use the
  additional height of the buttons. However, I agree it's somehow more logical
  to have the register view on the right side. Maybe only because of
  convention... so it's possibly still up for debate.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31198 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 11:04:38 +00:00
Stephan Aßmus 4aeb7a3cc2 * Made BTwoDimensionalLayout and BSplitLayout::GetInsets() const.
* Give access to BSplitLayout::SetInsets() and GetInsets() from BSplitView.
* Give access to BSplitView::SetInsets() from BSplitLayoutBuilder and
  LayoutBuilder.
* Some automatic white-space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-23 10:56:22 +00:00
Stephan Aßmus 448ab012ef Created an icon for the Debugger.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31176 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-22 09:04:02 +00:00
Stephan Aßmus 92772bbddd Patch by Christian Packmann:
* Implemented a CPU feature detection function in AppServer.cpp.
  The results are put into the global variable gAppServerSIMDFlags.
* Implemented an SIMD accelerated version of the bilinear bitmap
  scaling code that is the backend of BView::DrawBitmap(...,
  uint32 options) used by the MediaPlayer to smoothly upscale
  movies when no video overlay is available. The speed up is very
  noticable and a Core 2 Duo @ 1.8 GHz can play at 1920x1200 now
  without breaking a sweat. There is currently one SIMD version
  implemented which uses MMX and plain SSE.

Very cool! Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 22:07:54 +00:00
Stephan Aßmus b3601d823c * Update indentation style in TabView.h
* Added _MinTabeSize() to BTabView. It makes sure that the BTabView displays
  at least two tabs. In the future it should also add the room to display some
  buttons for cycling the currently displayed tabs left/right if there is more
  than can fit.
* In BTabView::Min/Max/PreferredSize(), use _MinTabSize() to compute the
  respective size.
* Improve Tab rendering code so there are no ugly overlaps at the right edge
  if the tabs falls directly on the view edge.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 13:04:51 +00:00
Stephan Aßmus ea603b7af3 Small style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 13:01:40 +00:00
Stephan Aßmus a560ab791b * Create the BColumnListViews with fancy borders.
* Add some spacing around most views in the top level layout.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31152 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 12:07:11 +00:00
Stephan Aßmus abe7a40cca Work around a GCC2 problem with dynamic casting a BHandler pointer to a BView
in BWindow::_FindView(int32 token). This fixes the BColumnListViews in
DebugAnalyzer and Debugger to draw their frames properly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 12:05:34 +00:00
Stephan Aßmus 8f24c71102 Reverted my change to usage of _get_object_token_(), it already means to use
a cached token... doh! Thanks Axel!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31140 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:47:28 +00:00
Stephan Aßmus 5c5195ee7e Fixed regression in SetViewCursor(). It wasn't possible anymore to switch
back to the system default cursor. For that cursor token, the global cursor
manager returns NULL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31138 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:26:34 +00:00
Stephan Aßmus 1f9fd6d866 * Added BSplitView drawing code to ControlLook.
* BSplitView uses ControlLook to draw itself.
* Small refactoring in SplitLayout to implement IsAboveSplitter(BPoint).
* BSplitView updates the view cursor when the mouse is above a splitter.
* Standard splitter size is now 6 pixels, which is a bit easer to hit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31137 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:03:33 +00:00
Stephan Aßmus 01206002ba * Added NOTE to BListView destructor about not freeing the items.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:00:33 +00:00
Stephan Aßmus 262c5f651e * Small cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 15:00:11 +00:00
Stephan Aßmus fa0ba1f855 Cache a view's server token. Avoids getting it for every
BView method that contacts the server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 14:12:30 +00:00
Stephan Aßmus 19e179ca4f * Moved the implementation of SetViewCursor from the thread of the
window of the view into the application thread. This solves the
  race condition with asynchronous SetViewCursor and deleting the
  cursor immediately afterwards for real.
* The ServerApp now requires a reference to the current cursor,
  just in case...
* Added TODOs for caching the BView token, it's currently resolved
  for every single BView call that talks to the server... not good!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31133 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 12:11:49 +00:00
Stephan Aßmus 5d62f8e0e5 Make it possible to properly use operator= on BCursors by making sure the
reference counting is maintained correctly in the app_server. While reviewing
this code, I have my doubts that my previous solution for handling pending
SetViewCursor() calls is always working as it is intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-20 10:10:01 +00:00
Stephan Aßmus 041b97a8b8 * Updated header indentation style and small cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-16 14:02:18 +00:00
Stephan Aßmus 5505e1909c * Apparently the "free_identify_partition_cookie()" function pointer should
not be NULL. If the intention is to allow this, then there is a bug somewhere
  else. Fixes booting on Macs, thanks to Zenja for testing this!
* Fixed what I believe to be an off-by-one error in BlockCount(). This also
  makes it symetrical with SetBlockCount().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-16 10:38:25 +00:00
Stephan Aßmus 914fb50397 * Added a couple TODOs after reading a bit in the source.
* Introduced a lock in GetDefaultDevice() and ReleaseDevice() as a quick
  solution to the race condition in those functions. It could also use
  proper atomic ref counting. Untested.
* Automatic white space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-15 15:15:32 +00:00
Stephan Aßmus c43e377cff Increase the file handle limit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-14 12:16:18 +00:00
Stephan Aßmus f76e944e24 * Fixed problems when installing onto non-empty target volumes. The
'system' folder will be a clean copy of the source volume. Other
  folders will be merged (as before), but in case a folder is in the
  way of a link or file from the source volume, it will now be purged.
* Clarified the alert for non-empty target volumes, so it is very clear
  what happens. (Maybe there ought to the be option to only copy the system
  folder, though.)
* Fixed a problem with copying attributes in certain cases.
* Fixed the main GUI not resetting state properly after encountering an
  error during the copy process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31042 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-14 11:07:52 +00:00
Stephan Aßmus dc3d592369 When the media server is not running, display an alert and offer to start it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31035 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 17:06:58 +00:00
Stephan Aßmus 6f8792ed23 Added BeHappy icon by zuMi. Thanks a lot and sorry for the delay! This is not
yet added to the BeHappy package AFAIK.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 13:56:25 +00:00