diff --git a/headers/os/media/MediaFile.h b/headers/os/media/MediaFile.h index 54ad63be43..4624aa8d82 100644 --- a/headers/os/media/MediaFile.h +++ b/headers/os/media/MediaFile.h @@ -131,7 +131,8 @@ private: media_file_format fMFI; bool fFileClosed; - bool _reserved_was_fUnused[3]; + bool fDeleteSource; + bool _reserved_was_fUnused[2]; BMediaTrack **fTrackList; void Init(); diff --git a/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp b/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp index 5bbbad7e90..5fb2351f84 100644 --- a/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp +++ b/src/add-ons/media/plugins/mp3_decoder/mp3DecoderPlugin.cpp @@ -97,7 +97,8 @@ mp3Decoder::Setup(media_format *ioEncodedFormat, // put some more useful info into the media_format describing our input format ioEncodedFormat->u.encoded_audio.bit_rate = fBitRate; - + ioEncodedFormat->u.encoded_audio.output.frame_rate = fFrameRate; + ioEncodedFormat->u.encoded_audio.output.channel_count = fChannelCount; return B_OK; } diff --git a/src/kits/media/MediaFile.cpp b/src/kits/media/MediaFile.cpp index 1a6d029bf7..c9fcfd2be3 100644 --- a/src/kits/media/MediaFile.cpp +++ b/src/kits/media/MediaFile.cpp @@ -19,6 +19,7 @@ BMediaFile::BMediaFile(const entry_ref *ref) { CALLED(); Init(); + fDeleteSource = true; InitReader(new BFile(ref, O_RDONLY)); } @@ -34,6 +35,7 @@ BMediaFile::BMediaFile(const entry_ref * ref, { CALLED(); Init(); + fDeleteSource = true; InitReader(new BFile(ref, O_RDONLY), flags); } @@ -51,6 +53,7 @@ BMediaFile::BMediaFile(const entry_ref *ref, { CALLED(); Init(); + fDeleteSource = true; InitWriter(new BFile(ref, O_WRONLY), mfi, flags); } @@ -71,7 +74,8 @@ BMediaFile::~BMediaFile() ReleaseAllTracks(); delete fTrackList; delete fExtractor; - delete fSource; + if (fDeleteSource) + delete fSource; } status_t @@ -266,6 +270,7 @@ BMediaFile::Init() fTrackList = 0; fExtractor = 0; fErr = B_OK; + fDeleteSource = false; // not used so far: fEncoderMgr = 0; @@ -306,7 +311,7 @@ BMediaFile::InitWriter(BDataIO *source, const media_file_format * mfi, int32 fl //unimplemented BMediaFile::BMediaFile(); BMediaFile::BMediaFile(const BMediaFile&); -BMediaFile::BMediaFile& operator=(const BMediaFile&); + BMediaFile::BMediaFile& operator=(const BMediaFile&); */ status_t BMediaFile::_Reserved_BMediaFile_0(int32 arg, ...) { return B_ERROR; }