History log of /haiku/src/kits/media/MediaFile.cpp
Revision Date Author Comments
# 727e49c6 12-Jul-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

Media Kit: remove MediaExtractor::Source

The idea was that the Media Extractor could wrap the original source
given by BMediaTrack, but all operations on the data go through
MediaExtractor anyway.
We could probably move ownership of the BDataIO completely into
MediaExtractor instead.

Change-Id: I846b34b543fb983e60f6adf86cb17e835303267b
Reviewed-on: https://review.haiku-os.org/c/1587
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>


# 218a8c03 17-May-2019 Augustin Cavalier <waddlesplash@gmail.com>

Revert the Codec Kit.

All of Barrett's individual reverts have been squashed into this
one commit, save a few actual bugfixes.

Change-Id: Ib0a7d0a841d3ac40b1fca7372c58b7f9229bd1f0


# 662583b3 21-Feb-2019 Barrett17 <b.vitruvio@gmail.com>

MediaStreamer: Extend API to support DVD navigation

* This is a general review of the code and includes a rework
of the sniffing API.


# b6c5bdbd 07-Dec-2018 Barrett17 <b.vitruvio@gmail.com>

MediaFile: Properly use BMediaExtractor::GetMetaData


# 278d03da 27-Nov-2018 Barrett17 <b.vitruvio@gmail.com>

media_kit: Remove most private dependencies from codec_kit

* Move to BCodecKit namespace and make extensive use
of BCodecRoster.
* This is a first step in the right direction of
decreasing private dependencies. Some APIs are being
translated to the CodecKit. I am doing an investigation
on which APIs are really used among apps, so that the new
kit can be more slim and oriented toward easy development
and can be extended in the right direction instead to
continue maintaning unuseful code.
* BMediaFormats needs still a bit of love.
* General improvements in style and code maintainability.


# ee09c291 24-Nov-2018 Barrett17 <b.vitruvio@gmail.com>

Media Kit: Update private code


# af34e7ab 22-Nov-2018 Barrett17 <b.vitruvio@gmail.com>

Codec Kit: Beauty fixes


# b1c8bb2c 21-Nov-2018 Barrett17 <b.vitruvio@gmail.com>

MediaFile/MediaTrack: Use MetaData API internally


# 9b50ad1d 21-Nov-2018 Barrett17 <b.vitruvio@gmail.com>

MediaFile/MediaTrack: Use metadata to retrieve copyright


# b84955d4 23-Oct-2018 Barrett17 <b.vitruvio@gmail.com>

media: Remove debug.h, finalize MediaDebug.h

* Funny rust from 0 AD.


# dbad909b 24-Jul-2017 Jérôme Duval <jerome.duval@gmail.com>

BMediaFile: fix MediaExtractor crash.

* stop the extractor processing before deleting the source.
* crash happened in MediaPlayer FilePlaylistItem::_CalculateDuration().
* was a regression introduced in hrev50671.
* fixes #13156.


# c0ef5b2b 04-May-2017 Dario Casalinuovo <b.vitruvio@gmail.com>

MediaFile: Little refactor to use the MediaStreamer class

* This clarify the ownership of the source when using the experimental
API.
* The extractor/writer are simplified and don't have to care about
adapters.
* MediaStreamer is able to provide a generic BAdapterIO that is
suitable also for different uses than the codecs API itself.


# 156b6cd5 05-Nov-2016 Adrien Destugues <pulkomandy@pulkomandy.tk>

BMediaFile: fix destruction order.

The fSource can point to a source with code inside a media plug-in (in
particular, the HTTP source from the http_streamer plugin). However,
deleting the extractor can cause the plugin to become "unreferenced" and
unloaded. If we try to call code to delete the source later, we find
that the code is already unloaded, and the app crashes.

This happens in Web+ when navigating away from Youtube or otherwise
interrupting a video while it is being played.

Fixes the crashing part of #13058.


# 0c98ab27 19-Oct-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

BMediaFile: Add BUrl SetTo

* Also fix the server version of BUrl constructor
to use a const reference.


# 95a5e625 07-Sep-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

MediaFile: Correctly delete the source on exit

* The delete flag of BUrl constructors was reset by _Init,
this lead to a zombie thread on the background under certain
conditions.


# 4dd09daf 24-Jun-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

Streaming: Use const reference in place of copying

* Thanks to Markus for reporting.


# 0ba82236 24-Jun-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

Streaming: Remove any pointer BUrl argument

* There's no need to pass BUrl by pointer, this is
potentially dangerous and leaky without any advantage,
copying is definitely safer.


# 2ceb090f 19-May-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

media_kit: Follow up fix to use only portable codes

* My previous commit fixed x86_64 but broke all other archs.


# f4ba347b 19-May-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

media_kit: Fix debug printf werrors

* When debugging was enabled in the media_kit those were
causing the build to fail complaining about werrors.


# dc941325 16-May-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

BMediaFile: Set for deletion a source obtained from url

* Added some TODOs and comments for future things that
are not priority now.


# b7776028 25-Mar-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

MediaFile: Rework to support BUrl sources


# 6efbc4bb 06-Mar-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

BMediaFile: Move BBufferIO usage into the plugin manager

* Add InitCheck for the wrapper status.


# 40379e32 21-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* 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


# 7cd3a249 17-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

Implemented an API to get arbitrary meta-data about
BMediaFiles and about BMediaTracks in BMessages. As an
example, one can get chapter meta-data or the language
name of an audio-track.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38685 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6768fe0d 28-Dec-2009 David McPaul <dlmcpaul@gmail.com>

Improve IO performance for all media files

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# def0e1ed 04-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Don't leak the MediaWriter instance.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32108 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54897d5c 31-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

* Also pass the media_codec_info to the Writer::AllocateCookie(), since that
info is not part of the media_format otherwise.
* Finished enough in the AVFormatWriter and AVCodecEncoder that we can now
actually create AVIs and MPGs and encode MPEG1, MPEG2 and MPEG4 video.
But no audio as of yet. Also, there is no bit-rate/quality setup, so it seems
libavformat is using the least possible bit-rate/quality.
* Enable some more muxers and encoders in the FFmpeg libs.
* Uses pixel format conversion from libswsscale, need to read the documentation
again, but I think it makes the plugin GPL.
* Fixed includes in libswscale/swscale.h, this is now an unmodified FFmpeg 0.5
header again (AFAICT).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32043 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fa770e4c 31-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

* Writer::WriteChunk() takes media_encode_info* instead of flags.
* Improved Encoder API towards what we need for the get_next_encoder() variants
and the BMediaTrack API.
* Implemented the rest of MediaWriter. Still undecided what to make of
AddTrackInfo(). BMediaEncoder has that as well, which hints that this is
something the Encoder needs to support. But it could also be that this is
only possible to support in Writer.
* Wired a lot of previously unimplemented methods in BMediaFile and BMediaTrack
needed for write support. If I have not overlooked anything, only the
parameter stuff is still unimplemented now.

This is all untested, since the FFMpeg Encoder and Writer are still only stubs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cf8af722 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

_InitReader(): source can only be NULL if we tried to allocate it ourself, so
we can set fErr to B_NO_MEMORY in that case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30989 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60a2c42f 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Check the params in SetTo().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30988 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b7cf537e 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Added BMediaFile::_UnInit() and implemented the two SetTo() methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30987 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b5ec3e56 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Coding style clean-up.
* Use std::nothrow and check allocations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30986 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b1e3b1a 07-May-2008 Maurice Kalinowski <mauricek@nowhere.fake>

- Implemented MediaExtractor::Copyright, which just calls the instantiated reader
- Implemented BMediaFile::Copyright, which just calls Copyright() of the extractor. So this is just a simple pass through.
- Style cleanup (mostly whitespaces)

Problem is that our readers currently return the copyright of the source code, not the copyright of the MediaFile itself, like the BeBook documents. Thus, we might need to change all readers to return appropiate data or behave differently for Haiku readers.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25356 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2848f10 19-Mar-2008 Stephan Aßmus <superstippi@gmx.de>

* Improved debug output.
* fTrackList was deleted with delete, but needed delete[].


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24472 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fa96039f 20-Nov-2004 shatty <shatty@nowhere.fake>

address compiler warnings


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e4d07a3e 15-Aug-2004 beveloper <beveloper@nowhere.fake>

Added some new functions which seem to be required for Xentronics SampleStudio Pro.
Added missing license to implementation files.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8590 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b1a94814 22-Dec-2003 beveloper <beveloper@nowhere.fake>

fixed a couple of issues with id3attr


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5737 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d52474b 08-Dec-2003 beveloper <beveloper@nowhere.fake>

a couple of fixes to the error handling code


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abf9e66a 06-Dec-2003 beveloper <beveloper@nowhere.fake>

fixed timing information returned in media_header
added GetFileFormatInfo to reader api


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5595 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d0b86c0f 05-Dec-2003 beveloper <beveloper@nowhere.fake>

mp3 decoding and seeking works now


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5581 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1210ab70 04-Dec-2003 beveloper <beveloper@nowhere.fake>

Huge hack to load the mp3 reader and decoder.
Soundplay loads it and can play a crackling mp3, but MediaPlayer doesn't


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5572 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d8591482 23-Nov-2003 beveloper <beveloper@nowhere.fake>

integration of codec API into BMediaFile and BMediaTrack


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5468 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52a38012 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40379e325c1960b6120e34f0a50131b9029c5a3b 21-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* 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


# 7cd3a2490b94cecc15ce451c8d1c97c04dc852bd 17-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

Implemented an API to get arbitrary meta-data about
BMediaFiles and about BMediaTracks in BMessages. As an
example, one can get chapter meta-data or the language
name of an audio-track.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38685 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6768fe0d89798a73e691f2eb648b8e268fd6dbaa 28-Dec-2009 David McPaul <dlmcpaul@gmail.com>

Improve IO performance for all media files

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# def0e1edf6029b5b520bab4d5af26e6e09f2d800 04-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Don't leak the MediaWriter instance.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32108 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54897d5c06df0e0384e0b59b23a1d926762cc078 31-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

* Also pass the media_codec_info to the Writer::AllocateCookie(), since that
info is not part of the media_format otherwise.
* Finished enough in the AVFormatWriter and AVCodecEncoder that we can now
actually create AVIs and MPGs and encode MPEG1, MPEG2 and MPEG4 video.
But no audio as of yet. Also, there is no bit-rate/quality setup, so it seems
libavformat is using the least possible bit-rate/quality.
* Enable some more muxers and encoders in the FFmpeg libs.
* Uses pixel format conversion from libswsscale, need to read the documentation
again, but I think it makes the plugin GPL.
* Fixed includes in libswscale/swscale.h, this is now an unmodified FFmpeg 0.5
header again (AFAICT).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32043 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fa770e4c84d6b6e9721a6072041aba4468e79b98 31-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

* Writer::WriteChunk() takes media_encode_info* instead of flags.
* Improved Encoder API towards what we need for the get_next_encoder() variants
and the BMediaTrack API.
* Implemented the rest of MediaWriter. Still undecided what to make of
AddTrackInfo(). BMediaEncoder has that as well, which hints that this is
something the Encoder needs to support. But it could also be that this is
only possible to support in Writer.
* Wired a lot of previously unimplemented methods in BMediaFile and BMediaTrack
needed for write support. If I have not overlooked anything, only the
parameter stuff is still unimplemented now.

This is all untested, since the FFMpeg Encoder and Writer are still only stubs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cf8af722336b0e08f091b1ebb44d2fd49a8725c9 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

_InitReader(): source can only be NULL if we tried to allocate it ourself, so
we can set fErr to B_NO_MEMORY in that case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30989 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60a2c42f7644bbdc1812aa83d014f70b74e65b59 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Check the params in SetTo().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30988 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b7cf537e500c9138a03b1d9e674e435465ec3546 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Added BMediaFile::_UnInit() and implemented the two SetTo() methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30987 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b5ec3e566900338e7f1449bbd347650a8df13fc4 07-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Coding style clean-up.
* Use std::nothrow and check allocations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30986 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b1e3b1af881f935640c1f4b78f8a0c158168754 07-May-2008 Maurice Kalinowski <mauricek@nowhere.fake>

- Implemented MediaExtractor::Copyright, which just calls the instantiated reader
- Implemented BMediaFile::Copyright, which just calls Copyright() of the extractor. So this is just a simple pass through.
- Style cleanup (mostly whitespaces)

Problem is that our readers currently return the copyright of the source code, not the copyright of the MediaFile itself, like the BeBook documents. Thus, we might need to change all readers to return appropiate data or behave differently for Haiku readers.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25356 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2848f102ba5f7c4c535a18665208551337e2480 19-Mar-2008 Stephan Aßmus <superstippi@gmx.de>

* Improved debug output.
* fTrackList was deleted with delete, but needed delete[].


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24472 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fa96039f9c477d1346f7afc6cc8b887cd366b86d 20-Nov-2004 shatty <shatty@nowhere.fake>

address compiler warnings


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10076 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e4d07a3e7185e6d020d418c241613d566ccd7b15 15-Aug-2004 beveloper <beveloper@nowhere.fake>

Added some new functions which seem to be required for Xentronics SampleStudio Pro.
Added missing license to implementation files.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8590 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b1a94814dd6de01378f11039757007c6c2cadc4b 22-Dec-2003 beveloper <beveloper@nowhere.fake>

fixed a couple of issues with id3attr


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5737 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d52474bc70c165c0cd4217af59d148ed810fa11 08-Dec-2003 beveloper <beveloper@nowhere.fake>

a couple of fixes to the error handling code


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abf9e66abe71bc72f6bedb4261c27dffa025d2d3 06-Dec-2003 beveloper <beveloper@nowhere.fake>

fixed timing information returned in media_header
added GetFileFormatInfo to reader api


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5595 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d0b86c0f31ec58c29fdce972f8e892235c22768b 05-Dec-2003 beveloper <beveloper@nowhere.fake>

mp3 decoding and seeking works now


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5581 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1210ab70ac360af3e24f04ef2a1fa5bdef4f0b70 04-Dec-2003 beveloper <beveloper@nowhere.fake>

Huge hack to load the mp3 reader and decoder.
Soundplay loads it and can play a crackling mp3, but MediaPlayer doesn't


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5572 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d859148201db6e851ba0a8ed96b12af21fbf06c0 23-Nov-2003 beveloper <beveloper@nowhere.fake>

integration of codec API into BMediaFile and BMediaTrack


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5468 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52a380120846174213ccce9c4aab0dda17c72083 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96