mirror of
https://review.haiku-os.org/haiku
synced 2025-02-02 03:36:14 +01:00
68 lines
1.5 KiB
C
68 lines
1.5 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 void GetFileFormatInfo(media_file_format* mff) = 0;
|
||
|
|
||
|
virtual status_t AllocateCookie(void** cookie) = 0;
|
||
|
virtual status_t FreeCookie(void* cookie) = 0;
|
||
|
|
||
|
virtual status_t AddTrackInfo(void* cookie, uint32 code,
|
||
|
const void* data, size_t size,
|
||
|
uint32 flags = 0) = 0;
|
||
|
|
||
|
virtual status_t WriteNextChunk(void* cookie,
|
||
|
const void* chunkBuffer, size_t chunkSize,
|
||
|
uint32 flags) = 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;
|
||
|
};
|
||
|
|
||
|
} } // namespace BPrivate::media
|
||
|
|
||
|
using namespace BPrivate::media;
|
||
|
|
||
|
#endif // _WRITER_PLUGIN_H
|