1 /* 2 * Copyright 2009-2010, Stephan Aßmus <superstippi@gmx.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 #ifndef _MEDIA_WRITER_H 6 #define _MEDIA_WRITER_H 7 8 9 #include "EncoderPlugin.h" 10 #include "TList.h" 11 #include "WriterPlugin.h" 12 13 14 namespace BPrivate { 15 namespace media { 16 17 18 class MediaWriter { 19 public: 20 MediaWriter(BDataIO* target, 21 const media_file_format& fileFormat); 22 ~MediaWriter(); 23 24 status_t InitCheck(); 25 26 BDataIO* Target() const; 27 28 void GetFileFormatInfo(media_file_format* mfi) const; 29 30 status_t CreateEncoder(Encoder** _encoder, 31 const media_codec_info* codecInfo, 32 media_format* format, uint32 flags = 0); 33 34 status_t SetCopyright(int32 streamIndex, 35 const char* copyright); 36 status_t SetCopyright(const char* copyright); 37 status_t CommitHeader(); 38 status_t Flush(); 39 status_t Close(); 40 41 status_t AddTrackInfo(int32 streamIndex, uint32 code, 42 const void* data, size_t size, 43 uint32 flags = 0); 44 45 status_t WriteChunk(int32 streamIndex, 46 const void* chunkBuffer, size_t chunkSize, 47 media_encode_info* encodeInfo); 48 49 private: 50 struct StreamInfo { 51 void* cookie; 52 }; 53 54 private: 55 BDataIO* fTarget; 56 Writer* fWriter; 57 58 List<StreamInfo> fStreamInfos; 59 60 media_file_format fFileFormat; 61 }; 62 63 64 }; // namespace media 65 }; // namespace BPrivate 66 67 using namespace BPrivate::media; 68 69 70 #endif // _MEDIA_WRITER_H 71