haiku/headers/os/codec/MediaWriter.h
Barrett17 608c9d9ae1 Codek Kit: Introduce BMetaData in Writer/MediaWriter
* Remove SetCopyright as well.
2018-11-21 17:22:58 +01:00

74 lines
1.6 KiB
C++

/*
* Copyright 2009-2010, Stephan Aßmus <superstippi@gmx.de>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef _MEDIA_WRITER_H
#define _MEDIA_WRITER_H
#include <MetaData.h>
#include "EncoderPlugin.h"
#include "TList.h"
#include "WriterPlugin.h"
namespace BPrivate {
namespace media {
class MediaWriter {
public:
MediaWriter(BDataIO* target,
const media_file_format& fileFormat);
~MediaWriter();
status_t InitCheck();
BDataIO* Target() const;
void GetFileFormatInfo(media_file_format* mfi) const;
status_t CreateEncoder(Encoder** _encoder,
const media_codec_info* codecInfo,
media_format* format, uint32 flags = 0);
// TODO: One of those is probably misplaced here.
// TODO: Why pointers? Just copy it
status_t SetMetaData(BMetaData* data);
status_t SetMetaData(int32 streamIndex,
BMetaData* data);
status_t CommitHeader();
status_t Flush();
status_t Close();
status_t AddTrackInfo(int32 streamIndex, uint32 code,
const void* data, size_t size,
uint32 flags = 0);
status_t WriteChunk(int32 streamIndex,
const void* chunkBuffer, size_t chunkSize,
media_encode_info* encodeInfo);
private:
struct StreamInfo {
void* cookie;
};
BDataIO* fTarget;
Writer* fWriter;
List<StreamInfo> fStreamInfos;
media_file_format fFileFormat;
uint32 fReserved[5];
};
}; // namespace media
}; // namespace BPrivate
using namespace BPrivate::media;
#endif // _MEDIA_WRITER_H