fa770e4c84
* 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
73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
#ifndef _WRITER_PLUGIN_H
|
|
#define _WRITER_PLUGIN_H
|
|
|
|
#include <MediaTrack.h>
|
|
#include "MediaPlugin.h"
|
|
|
|
namespace BPrivate { namespace media {
|
|
|
|
class PluginManager;
|
|
|
|
class Writer {
|
|
public:
|
|
Writer();
|
|
virtual ~Writer();
|
|
|
|
virtual status_t SetCopyright(const char* copyright) = 0;
|
|
virtual status_t CommitHeader() = 0;
|
|
virtual status_t Flush() = 0;
|
|
virtual status_t Close() = 0;
|
|
|
|
virtual status_t AllocateCookie(void** cookie) = 0;
|
|
virtual status_t FreeCookie(void* cookie) = 0;
|
|
|
|
virtual status_t SetCopyright(void* cookie,
|
|
const char* copyright) = 0;
|
|
|
|
virtual status_t AddTrackInfo(void* cookie, uint32 code,
|
|
const void* data, size_t size,
|
|
uint32 flags = 0) = 0;
|
|
|
|
virtual status_t WriteChunk(void* cookie,
|
|
const void* chunkBuffer, size_t chunkSize,
|
|
media_encode_info* encodeInfo) = 0;
|
|
|
|
BDataIO* Target() const;
|
|
|
|
virtual status_t Perform(perform_code code, void* data);
|
|
|
|
private:
|
|
virtual void _ReservedWriter1();
|
|
virtual void _ReservedWriter2();
|
|
virtual void _ReservedWriter3();
|
|
virtual void _ReservedWriter4();
|
|
virtual void _ReservedWriter5();
|
|
|
|
public: // XXX for test programs only
|
|
void Setup(BDataIO* target);
|
|
|
|
BDataIO* fTarget;
|
|
|
|
// needed for plug-in reference count management
|
|
friend class PluginManager;
|
|
MediaPlugin* fMediaPlugin;
|
|
|
|
uint32 fReserved[5];
|
|
};
|
|
|
|
|
|
class WriterPlugin : public virtual MediaPlugin {
|
|
public:
|
|
virtual Writer* NewWriter() = 0;
|
|
virtual status_t GetSupportedFileFormats(
|
|
const media_file_format** _fileFormats,
|
|
size_t* _count) = 0;
|
|
|
|
};
|
|
|
|
} } // namespace BPrivate::media
|
|
|
|
using namespace BPrivate::media;
|
|
|
|
#endif // _WRITER_PLUGIN_H
|